Для примера я собираюсь создать сценарий резервного копирования файлов данных из папки своего профиля «C:\Users\Greg Shultz» в папку «TheBackup» на съемном жестком диске с меткой тома «J» (в своем сценарии, разумеется, надо заменить все имена и пути на свои собственные). Мой сценарий будет начинаться так:
Я хочу создать копии всех папок, даже пустых, потому что они могут пригодиться для сохранения определенных типов данных в будущем. Копировать файлы, удаленные с жесткого диска, я не собираюсь. Можно было бы использовать для этого переключатели /S и /PURGE, но можно достичь поставленных целей и с помощью одного-единственного переключателя /MIR. Теперь моя команда выглядит так:
В папке «C:\Users\Greg Shultz» хранятся некоторые скрытые системные файлы и папки, резервные копии которых мне совсем не нужны — например, файл NTUSER.DAT и папка AppData.
Кроме того, в папке «C:\Users\Greg Shultz» хранится целый ряд точек соединения, которые мне тоже не нужны. Точки соединения в Vista используются для связи различных системных папок (например, Cookies и SendTo) с папкой профиля пользователя.
Для исключения скрытых системных файлов я воспользуюсь переключателем /XA:SH, для исключения папки AppData — переключателем /XD AppData, а для исключения точек соединения — переключателем /XJD. Теперь мой сценарий выглядит так:
Одна из особенностей Robocopy заключается в том, что когда утилита сталкивается с файлом, который используется в данный момент другой программой, она останавливается и ждет, пока файл закроют, чтобы продолжить операцию копирования. Через каждые 30 секунд Robocopy осуществляет попытку повторного копирования файла. Количество повторных попыток по умолчанию — один миллион (я не шучу)! При таком раскладе операции резервного копирования вряд ли суждено когда-нибудь завершиться, поэтому количество повторных попыток стоит ограничить каким-то разумным числом.
Для изменения количества попыток повторного копирования используется переключатель /R, а для изменения интервала между повторными попытками — переключатель /W. Я решил сократить количество повторных попыток до пяти с интервалом в 15 секунд — тогда после разумного периода ожидания Robocopy сможет нормально продолжать работу:
Как и все утилиты с интерфейсом командной строки, Robocopy информирует пользователя о состоянии операции прямо в окне командной строки, но куда удобнее было бы сохранять эти сведения в файле журнала. Я люблю иметь полное представление о проделанных операциях, поэтому воспользуюсь для составления журнала переключателем /V. Но вот сведения о прогрессе копирования каждого файла в процентах мне вряд ли понадобятся, поэтому я включу в сценарий переключатель /NP. Чтобы создать файл журнала, я воспользуюсь переключателем /LOG, который предусматривает замену существующего журнала новым при каждом следующем резервном копировании. Теперь мой сценарий выглядит так:
Теперь, когда вы знаете, как работают подобные сценарии и какие для этого нужны переключатели, можете открыть Блокнот, ввести команду и сохранить файл как «RobocopyBackup.cmd». Чтобы сценарий и открытый файл журнала не препятствовали процессу копирования, я создал в корневом каталоге отдельную папку «BackupTool» («C:\BackupTool») и сохранил сценарий в ней.
Примечание от редактора: к статье прилагается образец файла RobocopyBackup.cmd.
После каждой операции резервного копирования файл журнала будет появляться в той же папке, где хранится сценарий. Имейте в виду: несмотря на то, что журнал — это простой текстовый файл, он может оказаться слишком объемным для Блокнота, поэтому лучше открывать его в WordPad или другом текстовом процессоре.
Теперь для создания дополнительной резервной копии данных достаточно дважды щелкнуть на ярлыке файла RobocopyBackup.cmd, чтобы запустить сценарий, а по завершении работы — посмотреть файл Backup.log. При желании можно запланировать автоматическое выполнение сценария с помощью Планировщика заданий (Task Scheduler).
А что думаете вы?
Приходилось ли вам пользоваться утилитой Robocopy в Windows Vista? Понравилась ли она вам? Какие еще переключатели вы включили бы в представленный выше образец сценария? Поделитесь с нами своим мнением в комментариях!