На главную страницу сайта celitel.info
Вы не вошли в систему! [ ВОЙТИ ] или [ ЗАРЕГИСТРИРОВАТЬСЯ ]
CELITEL » Справочник команд bat/cmd » Тема: Еженедельное копирование самого свежего файла по сети -- Стр. 1  | Перейти в: 

Послал Сообщение
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
            

На здоровье! ))

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.



Статистика

Сейчас у нас: и 9 Гостя(ей)
Всего сообщений: 26669
Всего тем: 1151
Поздравляем: TigerHeart !!

Based on:

 

  my counter Valid XHTML 1.0 Strict Valid CSS!