Резервне копіювання даних в Windows 7 з використанням вбудованої утиліти ROBOCOPY

Ось деякі найбільш важливі функції ROBOCOPY:
- багатопоточний копіювання;
- віддзеркалення або копіювання даних (бекап) "на льоту";
- автоматичне відновлення копіювання.
Приклади, наведені в цій статті, розраховані насамперед на новачків. Більш досвідчені користувачі можуть дізнатися про додаткову функціональності ROBOCOPY тут і ще тут:
Також, щоб побачити список команд, в командному рядку можна просто ввести robocopy /? і натиснути "ENTER".
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 2012

Так як одна з папок копіюється в мережеве сховище, то в процесі бекапа можуть виникнути обриви зв'язку. Через це можуть загубитися деякі критичні файли. Щоб запобігти цьому, до третьому рядку потрібно додати опцію / 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 (знаходиться в Пуск -> Програми -> Стандартні -> Службові). Просто створіть просту задачу і задайте певний час, коли планувальник повинен запустити створений вами командний файл.