Скрипты, планирование по расписанию и чек-листы для резервного копирования
Альтернативы, советы по безопасности и восстановлению после ошибок
Что такое Robocopy
Robocopy (robust file and folder copy) — это командный инструмент Windows для надёжного копирования и синхронизации файлов и папок. Он копирует файлы локально и по сети, поддерживает многопоточность, логирование и множество опций для управления тем, какие файлы копируются и как обрабатываются ошибки.
Краткое определение: Robocopy — командная утилита Windows для автоматизированного и надёжного копирования и синхронизации файлов.
Когда стоит использовать Robocopy
Robocopy удобен, если вы регулярно копируете одни и те же наборы файлов — для резервных копий, зеркалирования дисков или синхронизации рабочих данных между устройствами. Он полезен системным администраторам и продвинутым пользователям, которым нужно четко контролировать, какие файлы копируются и как обрабатываются ошибки.
Важно: Robocopy не спрашивает подтверждения. Команды могут удалять или перезаписывать файлы без дополнительной проверки. Всегда делайте тестовый запуск и имейте резервную копию.
Как запустить Robocopy
Откройте PowerShell или Windows Terminal (или классическую Командную строку). В PowerShell и CMD синтаксис robocopy одинаковый по базовой форме:
robocopy
Если список файлов не указан, копируются все файлы из исходной папки.
Часто используемые параметры и что они делают
/MIR — зеркало (mirror): делает зеркальную копию каталогов, включая удаление файлов в назначении, которых нет в источнике. Использовать осторожно.
/MOVE — переместить файлы и папки: переносит и удаляет из источника после копирования.
/XO — исключить более старые файлы: файлы из источника, которые старше соответствующих в назначении, не копируются.
/XD — исключить указанные каталоги по имени или пути.
/B — режим резервного копирования: игнорирует большинство ограничений доступа (требуется соответствующая привилегия).
/L — только перечислить (dry run): не копирует ничего, показывает, что было бы сделано.
/FP — показывать полные пути файлов в выводе.
/R: — количество повторов при ошибке (по умолчанию может быть большим; явно задавайте разумное значение).
/W: — пауза в секундах между повторами.
/MT[:n] — многопоточный режим, n потоков (по умолчанию 8, максимум зависит от версии). Ускоряет копирование больших коллекций мелких файлов, но повышает нагрузку на диск и сеть.
/LOG: — сохранить журнал выполнения в файл (перезаписывает файл).
/LOG+: — дописать в лог-файл.
/ETA — показывать ориентировочное время завершения.
/NP — не показывать прогресс для каждого файла (уменьшает объём вывода).
/TEE — выводить лог и в консоль, и в файл одновременно.
Важно: для безопасных операций сначала используйте /L и /FP, чтобы убедиться, какие изменения будут сделаны, затем запускайте настоящую операцию.
Пример: зеркалирование диска без опасного удаления
Этот пример копирует файлы с диска D:\ в M:\ и исключает системные папки и корзину. Здесь мы сознательно НЕ используем /MIR, чтобы не удалять случайно нужные файлы в назначении:
/XO — пропустить файлы из источника, старее файлов в назначении.
/XD — исключить “$Recycle.Bin” и “System Volume Information”. Обратите внимание на экранирование знака доллара в PowerShell через обратную кавычку () — в PowerShell$может обозначать переменную. Если вы запускаете в классической cmd.exe, кавычки работают иначе; в большинстве случаев достаточно двойных кавычек без экранирования$: ``` robocopy "D:\" "M:\" /XO /XD "$Recycle.Bin" "System Volume Information" ``` Используйте /L для безопасной проверки: ``` robocopy D:\ M:\ /XO /XD "$Recycle.Bin” “System Volume Information” /L /FP
## Скрипты и автоматизация
Сохраняйте команду robocopy в .bat или .ps1 файле. Пример простого .bat для ежедневного резервного копирования:
@echo off set SRC=D:\Users\Alice\Documents set DST=E:\Backups\Alice\Documents robocopy “%SRC%” “%DST%” /E /R:3 /W:10 /MT:16 /LOG:”C:\Logs\robocopy-docs.log” /TEE
Пояснения:
- /E — копировать все подкаталоги, включая пустые.
- /R:3 и /W:10 — три повтора с паузой 10 секунд между ними.
- /MT:16 — 16 потоков для ускорения.
- /LOG и /TEE — логирование и вывод в консоль.
## Планирование задач (Task Scheduler)
1. Создайте .bat или .ps1 с командой robocopy.
2. Откройте Планировщик заданий (Task Scheduler).
3. Создайте задачу: укажите триггер (по расписанию, при входе в систему, по событию).
4. В «Действиях» укажите запуск программы cmd.exe или powershell.exe с аргументами для выполнения вашего скрипта.
5. В настройках укажите «Выполнять с наивысшими правами», если нужен доступ администратора.
6. Тестируйте вручную и проверяйте логи.
## Когда Robocopy не подходит (примеры неудач)
- Новичок случайно применил /MIR и удалил нужные файлы в папке назначения.
- Требуется инкрементная дедупликация и шифрование «на лету» — лучше использовать специализированные инструменты резервного копирования.
- Нужен гибкий интерфейс управления версиями и восстановлением по точке во времени — используйте системные образы или облачные сервисы с версионированием.
## Альтернативы и когда их выбрать
- xcopy — устаревший, прост для базовых нужд, но функциональности меньше.
- rsync (через WSL или cwRsync) — мощный для сетевых синхронизаций и дельта-передачи; полезен, если вы уже используете UNIX-подходы.
- GUI-решения (FreeFileSync, SyncBack) — проще для неспециалистов, с визуальными настройками.
- Облачные резервные сервисы (OneDrive, Backblaze, Google Drive) — если вам нужно off-site копирование и простое восстановление.
## Чек-листы по ролям
Для домашнего пользователя:
- Сделать полный бэкап важной папки на внешний диск.
- Запустить сначала с /L и /FP.
- Настроить расписание на еженедельный запуск.
- Хранить второй бэкап в облаке.
Для системного администратора:
- Автоматизировать с помощью Task Scheduler и централизованного логирования.
- Использовать /R и /W с разумными значениями.
- Включить /LOG и архивировать логи.
- Тестировать восстановление из резервной копии.
Для менеджера бэкапа:
- Определить SLA: RTO/RPO.
- Подготовить процедурный документ и точки проверки.
- Назначить ответственных за проверку логов.
## Стандартная процедура (SOP) для еженедельного бэкапа с Robocopy
1. Подготовка: проверить достаточное место на диске назначения.
2. Тест: выполнить команду с /L /FP и сохранить список изменений.
3. Выполнение: запустить настоящий прогон с /LOG и /TEE.
4. Проверка: проанализировать лог на ошибки; при необходимости повторить с корректировками.
5. Хранение: держать минимум две копии — локальную и off-site/облачную.
6. Техническое обслуживание: раз в квартал проверять целостность резервной копии и время восстановления.
## Критерии приёмки
- Все файлы из контрольного набора присутствуют в папке назначения.
- Размер и количество файлов соответствуют ожиданиям (с поправкой на исключённые системные папки).
- В логах отсутствуют критические ошибки копирования.
## Тестовые сценарии и приемочные тесты
- Dry run: запустить с /L и проверить список файлов, которые будут скопированы.
- Частичное восстановление: восстановить 5 случайных файлов из резервной копии и убедиться в их целостности.
- Симуляция ошибки: сделать файл недоступным и проверить, что /R и /W корректно обрабатывают повторы и логируют ошибку.
## Восстановление после случайного удаления
1. Остановите дальнейшие операции, чтобы не перезаписать данные.
2. Проверьте доступные бэкапы и логи /LOG.
3. Попробуйте восстановить файлы из внешней копии или облака.
4. Если нет бэкапа, проверьте теневые копии тома (Volume Shadow Copies) и возможности восстановления Windows.
5. Документируйте инцидент и обновите процедуру, чтобы исключить повтор.
## Безопасность и конфиденциальность
- Запускайте Robocopy с учётной записью, имеющей только необходимые права.
- Для копирования персональных данных обеспечьте шифрование носителей или шифрование резервных хранилищ.
- Храните логи в защищённом месте и ограничьте доступ по правам.
- Если вы копируете данные в другое юридическое пространство, проверьте соответствие требованиям конфиденциальности и, при необходимости, политике хранения данных.
## Советы и лучшие практики
- Всегда сначала используйте /L и /FP для проверки.
- Не используйте /MIR, если нет уверенности, что источники полны и актуальны.
- Ограничивайте число повторов с помощью /R и /W, чтобы избежать длительных зависаний.
- Используйте /MT для ускорения на SSD и быстром канале, но не на перегруженных серверах.
- Логируйте с /LOG и ротацией логов, чтобы иметь историю операций.
## Краткий словарь терминов
- /MIR — зеркалирование каталога.
- /L — режим предварительного просмотра (dry run).
- /MT — многопоточность.
- /XD — исключить папки.
- /LOG — логировать в файл.
## Совместимость и миграция
Robocopy присутствует в современных версиях Windows и в большинстве случаев доступен без дополнительной установки. При миграции скриптов между PowerShell и cmd.exe учитывайте различия в обработке кавычек и экранирования символов, особенно для путей с пробелами и символом `$`.
## Маленькая шпаргалка (Cheat sheet)
- Проверка: robocopy C:\src D:\dst /L /FP
- Копировать всё: robocopy C:\src D:\dst /E /V /FP /LOG:C:\log.txt
- Зеркалирование (ОСТОРОЖНО): robocopy C:\src D:\dst /MIR /Z /LOG:C:\log.txt
- Многопоточность: добавьте /MT:32
- Исключение папок: /XD "node_modules" "temp"
## Заключение
Robocopy — надёжный инструмент для сценариев копирования и синхронизации в Windows. Он даёт тонкий контроль и масштабируемость для регулярных резервных копий и миграций, но требует внимательности: всегда тестируйте команды, логируйте операции и храните хотя бы две копии важных данных в разных местах.
Важно: прежде чем использовать параметры, которые удаляют файлы, убедитесь в корректности путей и протестируйте /L. Резервное копирование — это не одноразовая операция, это процесс: автоматизируйте, проверяйте и документируйте.
Дополнительные ресурсы: изучите справку `robocopy /?` и материалы по Task Scheduler для автоматизации задач.