Создание пользовательского средства резервного копирования данных с помощью утилиты Robocopy в Windows Vista

Сознательные пользователи ПК наверняка умеют создавать образ жесткого диска Vista с помощью средства Архивация всего компьютера (Complete PC Backup) Центра архивации и восстановления (Backup and Restore Center) и регулярно пользуются средством архивации Windows (Windows Backup) для создания резервных копий важных файлов.

Тем не менее, для пущей безопасности никогда не помешает иметь в своем распоряжении дополнительную резервную копию данных. В принципе, получить ее можно простым перетаскивание папки Документы (Documents) на съемный жесткий диск, но делать это каждый раз вручную несколько утомительно.

К счастью, в Microsoft Windows Vista есть утилита Robocopy (Прим. ред. Утилита входит в Windows Resource Kit), значительно облегчающая создание дополнительной резервной копии данных. Как многим наверняка известно, Robocopy входит в пакет служебных приложений Windows Resource Kit еще со времен Windows NT 4.0, но на этот раз разработчики Microsoft снабдили утилиту дополнительными функциями, предназначенными специально для Vista, и решили включить ее в состав операционной системы. То, что воспользоваться ею теперь может каждый, — просто замечательно, но есть здесь одно но: Robocopy — приложение с интерфейсом командной строки, и для управления его возможностями предусмотрено более восьмидесяти переключателей.

А значит, для того, чтобы использовать функции Robocopy в полной мере, придется потратить немало времени на расшифровку всех этих переключателей и выбор наиболее подходящих для поставленной задачи. Для прожженных технических специалистов это, может, и не проблема, но обычных пользователей, которым нужна всего лишь утилита для дополнительного резервного копирования, такие сложности могут отпугнуть.

Итак, изучим переключатели командной строки Robocopy, и для примера представим простой маленький сценарий, который можно использовать для создания точной копии всех файлов данных в папке профиля пользователя (C:/Users/Имя_пользователя).

Возможности Robocopy

Судя по названию утилиты, можно предположить, что это просто средство для копирования файлов (Robust File Copy — надежное копирование файлов), но на самом деле, это куда более мощное приложение со множеством замечательных функций, делающих его великолепным инструментом для создания резервных копий данных. Например, при повторном резервном копировании Robocopy копирует только те файлы, которые были изменены со времени создания последней резервной копии.

Если для резервного копирования используется ненадежное сетевое подключение, утилиту можно настроить таким образом, чтобы она дожидалась восстановления связи или возобновляла передачу файлов с того места, на котором остановилась. К тому же, Robocopy позволяет сохранить все сопутствующие данные — штампы даты и времени, списки контроля доступа системы безопасности (Access control lists, ACL) и многое другое.

Переключатели

В любой системе Windows Vista файл Robocopy.exe хранится в каталоге /Windows/System32, поэтому его можно запустить прямо из командной строки (Command Prompt). Чтобы создать текстовый файл с инструкциями к утилите, который можно будет просматривать в Блокноте (Notepad) (см. рис. A), надо выполнить команду Robocopy /? > RobocopySwitches.txt.

Создание
Рисунок A. Создать текстовый файл документации к утилите намного легче, чем пытаться разобраться в переключателях прямо в окне командной строки.

Файл документации разбит на пять разделов, включающих в себя определенные категории переключателей. Этот удобно отформатированный документ, наряду с моими примерами, можно использовать для создания своего собственного сценария Robocopy. Разделы справочного файла называются:

• Параметры копирования (Copy Options)
• Параметры выбора файлов (File Selection Options)
• Параметры повторных попыток (Retry Options)
• Параметры ведения журнала (Logging Options)
• Параметры задания (Job Options)

Создание сценария командной строки

Дляпримера  создадим сценарий резервного копирования файловданных из папки своего профиля C:/Users/Greg Shultz в папкуTheBackup на съемном жестком диске с меткой тома J (в своемсценарии, разумеется, надо заменить все имена и пути на своисобственные). Наш сценарий будет начинаться так:

Robocopy “C:/Users/Greg Shultz” “J:/TheBackup”


Создадим копии всех папок, даже пустых, потому что они могутпригодиться для сохранения определенных типов данных в будущем.Копировать файлы, удаленные с жесткого диска,  не будем. Можнобыло бы использовать для этого переключатели /S и /PURGE, но можнодостичь поставленных целей и с помощью одного-единственногопереключателя /MIR. Теперь  команда выглядит так:

Robocopy “C:/Users/Greg Shultz” “J:/TheBackup” /MIR


Впапке C:/Users/Greg Shultz хранятся некоторые скрытые системные файлыи папки, резервные копии которых мне совсем не нужны — например, файлNTUSER.DAT и папка AppData.

Кроме того, в папке C:/Users/GregShultz хранится целый ряд точек соединения, которые мне тоже не нужны.Точки соединения в Vista используются для связи различных системныхпапок (например, Cookies и SendTo) с папкой профиля пользователя.

Дляисключения скрытых системных файлов я воспользуюсь переключателем/XA:SH, для исключения папки AppData — переключателем /XD AppData, адля исключения точек соединения — переключателем /XJD. Теперь мойсценарий выглядит так:

Robocopy “C:/Users/Greg Shultz” “J:/TheBackup” /MIR /XA:SH /XD AppData /XJD


Однаиз особенностей Robocopy заключается в том, что когда утилитасталкивается с файлом, который используется в данный момент другойпрограммой, она останавливается и ждет, пока файл закроют, чтобыпродолжить операцию копирования. Через каждые 30 секунд Robocopyосуществляет попытку повторного копирования файла. Количество повторныхпопыток по умолчанию — один миллион (я не шучу)! При таком раскладеоперации резервного копирования вряд ли суждено когда-нибудьзавершиться, поэтому количество повторных попыток стоит ограничитькаким-то разумным числом.

Для изменения количества попытокповторного копирования используется переключатель /R, а для измененияинтервала между повторными попытками — переключатель /W. Сократим количество повторных попыток до пяти с интервалом в 15 секунд— тогда после разумного периода ожидания Robocopy сможет нормальнопродолжать работу:

Robocopy “C:/Users/Greg Shultz” “J:/TheBackup” /MIR /XA:SH /XD AppData /XJD /R:5 /W:15


Каки все утилиты с интерфейсом командной строки, Robocopy информируетпользователя о состоянии операции прямо в окне командной строки, нокуда удобнее было бы сохранять эти сведения в файле журнала. Чтобыиметь полное представление о проделанных операциях, воспользуемся для составления журнала переключателем /V. Но вот сведенияо прогрессе копирования каждого файла в процентах мне вряд липонадобятся, поэтому включим в сценарий переключатель /NP. Чтобысоздать файл журнала,  воспользуемся переключателем /LOG, которыйпредусматривает замену существующего журнала новым при каждом следующемрезервном копировании. Теперь  сценарий выглядит так:

Robocopy “C:/Users/Greg Shultz” “J:/TheBackup” /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /V /NP /LOG:Backup.log


Создание своего собственного сценария

Теперь,когда вы знаете, как работают подобные сценарии и какие для этого нужныпереключатели, можете открыть Блокнот, ввести команду и сохранить файлкак RobocopyBackup.cmd. Чтобы сценарий и открытый файл журнала непрепятствовали процессу копирования, мы создали в корневом каталогеотдельную папку BackupTool (C:/BackupTool) и сохранили сценарий вней.

Послекаждой операции резервного копирования файл журнала будет появляться втой же папке, где хранится сценарий. Имейте в виду: несмотря на то, чтожурнал — это простой текстовый файл, он может оказаться слишкомобъемным для Блокнота, поэтому лучше открывать его в WordPad или другомтекстовом процессоре.

Теперь для создания дополнительнойрезервной копии данных достаточно дважды щелкнуть на ярлыке файлаRobocopyBackup.cmd, чтобы запустить сценарий, а по завершении работы —посмотреть файл Backup.log. При желании можно запланироватьавтоматическое выполнение сценария с помощью Планировщик заданий (Task Scheduler).