Windows 7

в вопросах и ответах

FAQ, новости, статьи, обсуждения, общение



27.11.2011
Программы

Резервное копирование данных в Windows 7 с использованием встроенной утилиты ROBOCOPY

На свете существует огромное множество различных бесплатных решений для создания резервных копий критически важной информации на вашем жёстком диске. Однако большинство пользователей даже не подозревает о том, что в Windows 7 есть консольная программа под названием ROBOCOPY (Robust File Copy), которая позволяет очень просто делать бэкап данных. А используя планировщик, можно настроить резервное копирование по расписанию, чего достаточно для 99% домашних пользователей.
ROBOCOPY можно описать как раскачанный на стероидах XCOPY. Вот некоторые наиболее важные функции ROBOCOPY:

  • многопоточное копирование;
  • зеркалирование или копирование данных (бэкап) «на лету»;
  • автоматическое возобновление копирования.

Примеры, приведённые в данной статье, рассчитаны прежде всего на новичков. Более опытные пользователи могут узнать о дополнительной функциональности ROBOCOPY здесь:
http://technet.microsoft.com/ru-ru/library/cc733145%28WS.10%29.aspx
И ещё здесь:
http://technet.microsoft.com/ru-ru/library/cc733145%28WS.10%29.aspx

Также, чтобы увидеть список команд, в командной строке можно просто ввести «robocopy /?» и нажать «ввод».

ROBOCOPY может копировать только папки целиком. С отдельными файлами приложение не работает.

Задаём параметры копирования

Проще всего задать команды, по которым ROBOCOPY будет выполнять задачи, через пакетный файл (файл с расширением .BAT или .cmd). Пакетный файл представляет собой обычный текстовый файл, в котором одна за другой задаются команды.

Шаг 1
Кликаем по  и в меню ищем и запускаем Блокнот.

Шаг 2
Далее необходимо ввести в Блокноте нужные нам команды и сохранить файл с расширением .BAT, после чего дважды кликнуть по нему, тем самым запустив команды на обработку.
Для демонстрации работы программы я создал три папки (Data1, Data2 и Data3) с каким-то контентом, которые нужно скопировать. Одна папка расположена на диске E:, а две других — на диске F:. Я хочу скопировать эти папки как описано ниже:
Data1 на диске E: — копируем в папку Backups на диске G: (внешний USB накопитель)
Data2 на диске F: — копируем в папку Backups на диске G: (внешний USB накопитель)
Data3 на диске F: — копируем в папку Backups на диске Q: (сетевое хранилище)

Команды для ROBOCOPY записываются следующим образом:
robocopy <источник> <папка, куда будут копироваться файлы> <опции>

В моём случае, чтобы добиться желаемой цели, в текстовом файле нужно ввести:
robocopy E:\Data1 G:\Backups\Data1
robocopy F:\Data2 G:\Backups\Data2
robocopy F:\Data3 Q:\Backups\Data3
pause

Здесь источниками являются
E:\Data1
F:\Data2
F:\Data3

и директориями для копирования файлов
G:\Backups\Data1
G:\Backups\Data2
Q:\Backups\Data3

Данные пункты обязательны для работы ROBOCOPY.

Команда PAUSE в конце списка команд не позволит командной строке закрыться после завершения процесса копирования. Так вы сможете спокойно просмотреть результаты работы программы.

Теперь, дважды кликнув по созданному .BAT файлу, запустится командная строка и ROBOCOPY выполнит поставленные задачи.

Чтобы полностью задействовать всю мощь функционала ROBOCOPY, потребуется ввести некоторые дополнительные опции в командной строке самой программы. В следующем примере я изменю существующие команды так, чтобы:

1) Были скопированы все подпапки в пределах указанной папки, даже если они пустые.
2) К существующему бэкапу, который мы только что сделали, были добавлены только новые или измененные файлы и папки (этот процесс займет меньше времени).
3) Не отображался прогрессбар — информация о состоянии операции не отображается, отсюда создаётся гораздо меньший по объёму лог-файл.
4) Информация, которая отображается в окне командной строки, была сохранена в отдельный лог-файл для дальнейшего его изучения.

Чтобы проделать всё вышеперечисленное нужно добавить к существующим командам ROBOCOPY некоторые опции:

robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np /log+:backup_log.txt
pause

Где:
/e = копировать все подпапки, даже если они пустые
/mir = зеркалирование (копирует только новые или измененные файлы)
/np = не показывать прогрессбар
/log: = создать лог-файл

Запись /log+: во второй и третьей строке моего .BAT файла гарантирует, что результаты второй и третьей операции будут записаны в журнал, созданный для первой команды. Таким образом будет создан только один лог-файл вместо трёх.
Лог-файл сохраняется в той же папке, где находится .BAT файл.
Внимание! Используйте опцию /MIR с особой осторожностью, так как с ней ROBOCOPY при определённых условиях может удалить файл и из источника и из папки для записи бэкапа.
Это обычно происходит, если файл/папка в директории с бэкапом был удалён. ROBOCOPY автоматически «синхронизирует» бэкап и исходную папку, тем самым удалив файл/папку из папки-источника. Чтобы избежать этой ситуации, никогда не удаляйте файлы/папки из директории с бэкапом. Сначала удалите контент из папки-источника, а затем заново выполните резервное копирование.
Если вы сомневаетесь в своих действиях, то лучше не используйте опцию /MIR.

С опциями, заданными выше, все действия ROBOCOPY записываются в лог-файл и на экран не выводятся. Чтобы информация о выполнении команды выводилась на экран и одновременно записывалась в лог-файл, нужно к каждой команде добавить опцию /tee.

robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /tee /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /tee /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np /tee /log+:backup_log.txt
pause

Вот как выглядит типичный лог-файл ROBOCOPY. То же самое можно увидеть и в окне программы.

——————————————————————————-
ROBOCOPY     ::     Robust File Copy for Windows
——————————————————————————-
Started : Sun Sep 18 23:35:01 2011
Source : E:\Data1\
Dest : G:\Backups\Data1\
Files : *.*

Options : *.* /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
——————————————————————————
2 E:\Data1\
——————————————————————————
Total    Copied   Skipped  Mismatch    FAILED    Extras
Dirs :         1         0         1         0         0         0
Files :         2         0         2         0         0         0
Bytes :   442.1 k         0   442.1 k         0         0         0
Times :   0:00:00   0:00:00                       0:00:00   0:00:00
Ended : Sun Sep 18 23:35:01 2011

Так как одна из папок копируется в сетевое хранилище, то в процессе бэкапа могут возникнуть обрывы связи. Из-за этого могут потеряться некоторые критические файлы. Чтобы предотвратить это, к третьей строке нужно добавить опцию /z как показано ниже.

robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /tee /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /tee /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np /z /tee /log+:backup_log.txt

Эта опция позволяет повторить последнюю попытку копирования в случае неудачи. Программа будет пытаться скопировать файл каждые 30 секунд, пока у неё это не получится.

ROBOCOPY поддерживает многопоточное копирование (опция /mt). Можно выбрать число потоков в диапазоне от 1 до 128. По умолчанию используется 8 потоков.

robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /tee /mt:4 /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /tee /mt:4 /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np /z /tee /mt /log+:backup_log.txt

Ну и наконец вы можете автоматизировать резервное копирование данных с помощью планировщика заданий Windows 7 (находится в Пуск -> Программы -> Стандартные -> Служебные). Просто создайте простую задачу и задайте определённое время, когда планировщик должен запустить созданный вами командный файл.

комментария 3

Спасибо. Доходчивая статья для начинающих

Илья # 28.02.2012 в 10:50

Большое спасибо!
Только возникает один вопрос, если можно (я начинающий пользователь).
Как программа ROBOCOPY соотносится с резервным копированием в Windows 7 (через Панель управления)?
Какой вариант лучше использовать и в каких случаях?
Еще раз спасибо. Анатолий.

Анатолий # 05.06.2012 в 15:01

Приветствую.

Проверил. /MIR — не удаляет с эталонного хранилища файл если с бэкапа удалить
Стройка моего копирования:

robocopy \\эталонный_\ \\бэкап\ /MIR /Z /XD IT_MG /R:1 /W:5 /LOG:\\адрес хранения лога\log.txt /TEE /NP /XA:SH

Для себя составил описание ключей:
/MIR — создать зеркало дерева папок;
/Z — копирование файлов с возобновлением;
/XD IT_MG — исключить папки, соответствующие заданным именам и путям;
/R:1 — число повторных попыток для неудавшихся копий (1 шт.);
/W:5 — время ожидания между повторными попытками (5 сек.);
/LOG: \\адрес хранения лога\log.txt — куда пишем лог;
/TEE — ключ вывода данных в окно cmd и в файл лога;
/NP — писать в лог без хода процесса — не отображать число скопированных данных в %;
/XA:SH — исключить скрытые системные файлы при репликации.

Анатоли # 12.02.2017 в 10:59

Задайте вопрос или оставьте отзыв:

 

Последние комментарии

  • Богдан: Как ускорить скорость перебрасывания винды на флешку?
  • Евгений: Пользуюсь Windows 7 max исключительно один.И вдруг не могу поставить программу «открыть с помощью»:нет прав и отказано в допуске.Помогите.Антивирусами всё переворошил,админа через командную включал;Касперского Virus Removal Tool...
  • Женя: Универсальный активатор KMSAUTO последней версии для Windows 7, VISTA 8, 8.1, 10 + активация всех Microsoft Office 2010,2013,2016г. Скачать бесплатно goo.gl/qZh5MU . Отпишитесь как Вам активатор буду рад, что помог!
  • Анатоли: Приветствую. Проверил. /MIR — не удаляет с эталонного хранилища файл если с бэкапа удалить Стройка моего копирования: robocopy \\эталонный_\ \\бэкап\ /MIR /Z /XD IT_MG /R:1 /W:5 /LOG:\\адрес хранения лога\log.txt /TEE /NP /XA:SH Для...
  • Vlakra: Добрый день! При вставке в командную строку gpedit.msc система сообщает, что данная команда не является внутренней или внешней командой,исполняемой программой или пакетным файлом. Как быть?