Ниже описан эффективный способ создания точной копии («зеркала») каталога или диска. Его удобно использовать для резервного копирования даных на переносной диск или файловый сервер.

Утилита robocopy

Бесплатная консольная утилита robocopy («Robust File Copy» = «надежное копирование файлов») значительно упрощает задачу резервного копирования большого количества файлов. Входит в состав Windows 2003 Resource Kit, а также встроена в Windows Vista.

По сравнению с известной командой copy, а в чем-то и по сравнению с xcopy, имеет преимущества:

  • Копирует только изменившиеся файлы, что дает значительное ускорение при повторном копировании. Изменение файла определяется по его дате, размеру и атрибутам.
  • Может выполнять синхронизацию, т.е. удалять файлы из конечного каталога, если они отсутствуют в исходном.
  • Продолжает работу после обрыва сетевого соединения или переполнения диска (естественно, после устранения неисправности администратором).
  • Сохраняет атрибуты, права доступа, дату изменения.
  • Позволяет записывать свои параметры запуска в отдельный файл для удобства настройки и повторного использования.

Предлагаемый порядок действий

Исходные данные для примера

  1. Необходимо сделать копию всех каталогов и файлов диска D:, кроме D:\Temp.
  2. Копия будет храниться на переносном жестком диске, буква диска может меняться.

Первоначальная настройка

На переносном диске, предназначенном для хранения зеркальной копии, нужно разместить необходимые файлы:

  1. robocopy.exe — утилита для копирования, не требует установки.
  2. disk_d.rcj — текстовый файл с настройками копирования. Расширение означает «RoboCopy Job», т.е. файл задания для программы. Имя файла disk_d отражает его назначение.
  3. backup_mirror.cmd — командный файл для организации копирования. Запускать можно вручную или через ярлык.

Утилита robocopy, пример задания и командного файла, упаковано в архив ZIP: backup_mirror.zip

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

Ход выполнения будет отображаться в консольном окне, также будет создан отчет в файле disk_d.log. В любой момент можно прервать выполнение командного файла (например, если надо срочно выключить компьютер) и затем продолжить копирование, просто запустив его повторно.

Повторный запуск

Периодически необходимо обновлять «зеркало» на переносном диске. Для этого достаточно его подключить и снова запустить командный файл backup_mirror.cmd.

Настройка копирования

Более подробное описание ключей запуска программы см. robocopy.exe /?. Ниже упоминаются только необходимые параметры.

Содержимое файла задания disk_d.rcj, для понимания достаточно комментариев:

:: Файл настроек задания программы Robocopy
:: Задание: создать зеркало диска D: в подкаталоге D текущего каталога
:: Копируемый каталог
/SD:D:
:: Каталог назначения, указан относительный путь
/DD:.\D
:: Перечень каталогов, которые НЕ надо копировать, по одному в каждой строке
:: Внимание! Исключенные из копирования подкаталоги не удаляются
:: из каталога назначения, если они уже там есть
/XD
D:\RECYCLER
D:\System Volume Information
D:\Temp
:: Запись в файл журнала
/LOG:disk_d.log
/TEE :: также выводить сообщения в консоль
/NP :: не показывать прогресс (%) для каждого файла
:: Опции копирования
/MIR :: Создать зеркало (MIRror)
:: Повтор копирования в случае ошибок
/R:10 :: количество повторов
/W:30 :: время ожидания перед повтором в секундах

Содержимое backup_mirror.cmd:

@echo off
rem запустить настроенные задания (*.rcj), можно несколько подряд
robocopy.exe /job:disk_d
rem robocopy.exe /job:disk_e
rem ждать нажатия клавиши
echo.
pause