Robocopy в Windows: копіювання і синхронізація файлів

5 хв читання

Robocopy — вбудований в Windows інструмент для надійного копіювання файлів. Як синхронізувати папки, копіювати з відновленням і автоматизувати резервне копіювання.

Robocopy (Robust File Copy) вбудований в Windows починаючи з Vista. Це набагато надійніший спосіб копіювати файли ніж стандартний drag-and-drop — особливо для великих обсягів і по мережі.


Базовий синтаксис

robocopy Джерело Призначення [Файли] [Параметри]

Приклад:

robocopy "C:\Documents" "D:\Backup\Documents"

Копіює всі файли з Documents в Backup\Documents.


Найважливіші параметри

Параметр Що робить
/S Копіювати підпапки (крім порожніх)
/E Копіювати підпапки включно з порожніми
/MIR Дзеркало — синхронізує, видаляє зайве в призначенні
/MOVE Перемістити (видалити з джерела після копіювання)
/R:3 3 спроби при помилці (за замовчуванням 1000000)
/W:5 Чекати 5 секунд між спробами
/LOG:file.log Записувати лог у файл
/NP Не показувати % виконання
/XF *.tmp Виключити файли з маскою
/XD folder Виключити папку
/Z Відновлюваний режим (для нестабільних з'єднань)
/B Режим резервного копіювання (обходить деякі обмеження доступу)

Практичні приклади

Синхронізація папки (найчастіший сценарій):

robocopy "C:\Work" "D:\Backup\Work" /MIR /R:3 /W:5 /LOG:"D:\Backup\robocopy.log"

Копіювання з підпапками без дзеркалювання:

robocopy "C:\Photos" "E:\Photos" /E /R:3 /W:5

Копіювання тільки нових і змінених файлів:

robocopy "C:\Source" "D:\Dest" /E /XO

/XO — пропустити файли що старші в призначенні.

Виключити певні папки і файли:

robocopy "C:\Users\Name" "D:\Backup\Name" /E /XD ".git" "node_modules" /XF "*.tmp" "*.log"

По мережі з відновленням при обриві:

robocopy "\\Server\Share" "D:\LocalCopy" /E /Z /R:10 /W:30

Коди виходу (Exit Codes)

Robocopy повертає число після завершення:

Код Значення
0 Нічого не скопійовано (все актуально)
1 Файли успішно скопійовані
2 Є зайві файли в призначенні
4 Невідповідності (mismatched files)
8 Помилки копіювання
16 Серйозна помилка

Коди 0-7 вважаються успіхом. Код 8+ — проблема.


Автоматизація через Task Scheduler

$action = New-ScheduledTaskAction `
  -Execute "robocopy.exe" `
  -Argument '"C:\Important" "D:\Backup\Important" /MIR /R:3 /W:5 /LOG:"D:\Backup\log.txt" /NP'

$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"

Register-ScheduledTask -TaskName "Nightly Backup" `
  -Action $action -Trigger $trigger `
  -RunLevel Highest -Force

Порівняння з xcopy і copy

copy xcopy robocopy
Підпапки
Відновлення при помилці
Синхронізація
Лог Частково
Швидкість Низька Середня Висока

Резюме

robocopy Джерело Призначення /MIR /R:3 /W:5 — цієї команди достатньо для 90% завдань резервного копіювання. /MIR синхронізує обидві папки, /R:3 /W:5 запобігає зависанню при помилках. Додай /LOG щоб мати журнал виконання.

Схожі статті

← Всі статті