BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 14-07-2014 07:52 |
|
|
Добрый день. Какую команду надо прописать в bat-нике, чтоб при запуске ее, копировался с одной сетевой директории свежий бэкап в другую? То, что делается все через Планировщик заданий, это я знаю :)
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 15-07-2014 06:59 |
|
|
Прежде чем давать ответы, хотелось уточнить задачу.
Если сетевой ресурс смонтирован как диск, это одно, если обращаться как \\fileserver\common\aaa - это уже другое.
Если бэкап делается, например, раз в день и приблизительно известно время его создания,
то лучше воспользоваться утилитой robocopy или forfiles.
В более простых случаях используется команда xcopy или copy.
Как часто делается основной бэкап?
Или задача все-таки сводится к определению имени файла, созданного последним?
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 15-07-2014 09:04 |
|
|
Основной бэкап делается ежедневно в полночь, но в целях безопасности решили сделать так, чтоб по пятницам последний копировался на другой сервер. Имена файлов датами проставлены.
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 15-07-2014 10:20 |
|
|
Возможно удобнее это будет делать командой FORFILES.
FORFILES /P N:arhive /D %DATE% /C "cmd /c copy @path M:\SUPERARHIVE"
Такая команда скопирует все файлы сегодня созданные из папки N:\arhive в папку M:\SUPERARHIVE.
Если имя архива определяется датой, то его можно вычислить. Возможно, оно у вас такое.
copy N:\arhive\%date:~8%%date:~3,2%%date:~0,-8%.arj M:\SUPERARHIVE\
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 16-07-2014 05:02 |
|
|
Просьба... а можно разжевать последнюю команду "N:arhive\%date:~8%%date:~3,2%%date:~0,-8%.arj M:SUPERARHIVE" ?
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 17-07-2014 06:24 |
|
|
Ну пожуем)
Для наглядности лучше все самому посмотреть.
Пуск - Выполнить - ввести cmd. Откроется невзрачное черное окошко. Там и будем все смотреть. (прошу прощения, если объясняю очевидные вещи)
Есть системная переменная %date%. Чтобы посмотреть ее значение введем в окошко команду
echo %date%
Увы, в разных системах результат может разниться. Скорее всего вывод будет похож на этот)
17.07.2014
В хитрой команде, которую надо разжевать, присутствует двоеточие, тильда и циферки.
Они определяют начиная с какого символа и, возможно, сколько символов надо извлечь из переменной.
Так, %date:~8% означает взять, начиная с 8 символа (считаются от 0) и до конца строки. Т е получим 14.
Если нужно получить полный год - 2014 - тогда команда будет выглядеть так %date:~6%
В том же черном окошке введите команду
echo %date:~6%
Соответственно, второй кусок извлекает номер месяца, а третий - номер дня.
Вводим команду
echo %date:~8%%date:~3,2%%date:~0,-8%
или так
echo %date:~8%%date:~3,2%%date:~0,2%
Результат (сегодня) будет таким 140717
Далее точка и расширение архива.
Т е все это безобразие определяло имя бэкапа.
Я ведь не знаю, по каким правилам у вас формируется это имя.
Сказано лишь, что "имена файлов датами проставлены".
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 17-07-2014 07:18 |
|
|
В дополнение.
Используя описанные выше манипуляции с датой, можно для копирования
файлов, созданных (модифицированных) сегодня использовать команду xcopy:
xcopy c:\TEMP D:\vbk\in /D:%date:~3,2%-%date:~0,2%-%date:~8%
Это при условии, что в исходной папке хранятся только требуемые бэкапы.
Тогда имя файла знать необязательно.
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 18-07-2014 04:29 |
|
|
Я пожалуй еще по наглею, и опишу тогда все конкретней, а то щас криво сделаю и все похерю...
вот надо чтоб копировалось с "//directum/d/dirbackups" последний файл типа "[DIRECTUM] 2014-07-17.dat" в "//Jupiter/общая/СИТ и рПЭВМ/besezen/directum".
P.S. что то тут слэши в нужную сторону не ставятся...
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 21-07-2014 07:49 |
|
|
Да, не любит мой форум слэшей) Точнее, их при вводе надо удваивать.
Думаю, что это правильный подход - более конкретно сформулировать задачу. Тогда различных вариантов решения будет меньше.
Но и сейчас не все понятно в вопросе.
Не совсем понял, [DIRECTUM] - это часть имени? Если нет, то как-то так:
xcopy \\directum\d\dirbackups\%date:~6%-%date:~3,2%-%date:~0,-8%.dat "\\Jupiter\общая\СИТ\" /v
Если это таки часть имени, то путь с именем надо заключить в кавычки.
xcopy "\\directum\d\dirbackups\[DIRECTUM] %date:~6%-%date:~3,2%-%date:~0,-8%.dat" "\\Jupiter\общая\СИТ\" /v
Если нужно еще и в другую папку скопировать, то надо добавить еще одну команду.
рПЭВМ/besezen/directum, как я понял, сюда. Однако это не может быть путь для копирования.
Вероятно, все таки "\\Jupiter\рПЭВМ\besezen\directum".
xcopy \\directum\d\dirbackups\%date:~6%-%date:~3,2%-%date:~0,-8%.dat "\\Jupiter\рПЭВМ\besezen\directum\" /v
Для копирования сетевых ресурсов желательно после /v дописать через пробел /z
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 21-07-2014 08:30 |
|
|
"[DIRECTUM]" -Это часть имени с пробелом между 2014. Ровно как и в "//Jupiter/общая/СИТ и рПЭВМ/besezen/directum" это такой путь со всеми пробелами. как то так... )
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 21-07-2014 10:42 |
|
|
xcopy "\\directum\ddirbackups\[DIRECTUM] %date:~6%-%date:~3,2%-%date:~0,-8%.dat" "\\Jupiter\общая\СИТ и рПЭВМ\besezen\directum\" /v /z
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 22-07-2014 02:25 |
|
|
хм... теперь тут 2 момента- пишет, что Неправильно указан диск. Потом попробовал написать эту команду без кавычек и мне выдало- Недопустимое число параметров.
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 23-07-2014 05:33 |
|
|
Без кавычек никак нельзя если имена папок-файлов содержат кириллицу и пробелы.
Скорее всего дело в них.
Проверьте эту команду на папках и файлах, не содержащих кириллицу и пробелы.
Каким образом запускается команда?
Есть ли у пользователя, под которым выполняется команда, права обращаться к сетевым ресурсам?
Пробовали ли вы запустить xcopy с явным указанием файла, который нужно скопировать?
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|
BeseZen
Новичок
Из: Югорск
Сообщения: 7
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 24-07-2014 08:47 |
|
|
Получилось ) Указал другую папку для копирования, в которой нет ни пробелов ни кириллицы и все норм. Еще сам уже дописал в пути источника символ $ "\directumd$...:". Иначе он пишет "Неправильно указан диск".
Так что спасибо Тебе большое )
|
healer
Администратор
Из: Москва
Сообщения: 24454
|
|
Еженедельное копирование самого свежего файла по сети |
|
Послано: 24-07-2014 17:05 |
|
|
На здоровье! ))
~~~~~~~~~~~~
Здоровья Вам. Духовного и физического.
|