Мы устанавливаем Windows Resource Kit, и он устанавливает RoboCopy. Мы хотим иметь доступ к нескольким скриптам Windows, использующим RoboCopy, чтобы мы могли начать с них и построить что-то еще. Есть идеи, где я могу найти несколько образцов?
ПРИМЕЧАНИЕ 1:
Немного информации. Каждый раз, когда мы пытаемся скопировать диск D на диск E (новый диск), мы получаем сообщение об ошибке:
ОШИБКА 32 (0x000000020) Копирование файла d: \ pagefile.sys Процесс не может получить доступ к файлу, потому что он используется другим процессом. Жду 30 секунд.
Просто чтобы помочь разобраться.
Я использовал Robocopy для синхронизации содержимого веб-сайта на 9 веб-серверах. Вот образец командного файла, который запускал robocopy.exe. Этот командный файл планировалось запускать каждые 5 или 10 минут или мог запускаться вручную для немедленного внесения изменений.
robocopy.exe d:\inetpub\wwwroot\ \\webserver1\d$\inetpub\wwwroot\ *.* /E /PURGE /SEC /NP /NJH /NJS /XF keepalive_*.* /XD trigger /XD "D:\inetpub\wwwroot\Long Path Name" /R:5 /COPYALL /LOG:copy_to_webserver1.log
Предыдущая команда скопирует содержимое d: \ inetpub \ wwwroot и отправит его на удаленный сервер d: \ inetpub \ wwwroot.
/ E = копирует все подкаталоги, включая пустые
/ PURGE = удаляет целевые файлы / папки, которых больше нет в источнике
/ SEC = копирует разрешения безопасности (ACL) файлов в место назначения
/ NP = отключает индикатор выполнения копирования; ОБЯЗАТЕЛЬНО сделайте это, если вы регистрируете результаты
/ NJH = не записывать заголовок задания
/ NJS = не записывать сводку задания
/ XF = исключить копирование определенных файлов (например, keepalive_.)
/ XD = исключить копирование определенных папок (например, триггер)
/ R = указывает количество повторных попыток в случае сбоя копирования (например, 5)
/ COPYALL = копирует все: данные, атрибуты, временные метки, информацию о безопасности, владении и аудите; перебор, раз уж я указал / SEC
/ LOG = записывать результаты в указанный файл журнала (например, copy_to_webserver1.log)
Надеюсь, это поможет вам начать работу с Robocopy. Я обнаружил, что это очень надежное и очень надежное решение для синхронизации нашего контента.
У меня нет скриптов, но встроенная документация очень проста для понимания и очень полезна.
robocopy /? | more
Начните с малого, просто скопировав одну папку из точки a в точку b. Обязательно включите переключатель / L и переключатель / LOG. Параметр / L просто перечисляет файлы, которые он должен был скопировать, а / Log создаст журнал, чтобы вы могли проверить, что вы хотите скопировать. Оттуда вы просто увеличиваете сложность. Для примера сценария:
robocopy "C: \ test_source" "\ server01 \ C $ \ test_destination" / L / V / E /LOG:"c:\test_robocopy.log "/ R: 10 / W: 30
Итак, глядя на ваш комментарий к Trondh, у меня есть несколько запланированных сценариев RoboCopy, однако это выполняется (по крайней мере, мной) с помощью запланированной задачи. В качестве примера у меня есть сценарий RoboCopy, который копирует файлы с диска X: на диск Y: с использованием любых указанных мной параметров. Затем я создаю запланированную задачу для запуска этого сценария с заданным интервалом, и если я беспокоюсь о мониторинге этого сценария, я могу создать второй шаг к задаче, который отправляет мне журнал вывода по электронной почте, если я хочу регулярно его просматривать.
Это действительно так просто, что большинство из них делают свои собственные с нуля. Я никогда не видел «примеров кода», так как это в основном вопрос о том, откуда и куда с добавленными параметрами ... но взгляните на различные графические интерфейсы robocopy (просто погуглите), большинство из них покажет вам сгенерированную команду.
Для решения второй проблемы (ошибка заблокированного файла и последующее ожидание) используйте переключатели /r
, /w
и /reg
, например:
robocopy D:\ E:\ /r:1 /w:1 /reg
Это означает рэтри один раз только после шв течение одной секунды и сделайте эти настройки по умолчанию в регистри.
Связанный сценарий это шаблон, который можно использовать для копирования открытых файлов. Вы можете просто изменить команду копирования в скрипте на robocopy, и вы сможете выполнять robocopy открытые файлы.