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

6 min read

Robocopy — вбудований інструмент Windows для копіювання і синхронізації папок: основні параметри, дзеркальне копіювання, журналювання і автоматизація через Task Scheduler.

Robocopy (Robust File Copy) — вбудований у Windows інструмент для надійного копіювання великих обсягів даних. Значно потужніший за звичайний copy або xcopy.


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

robocopy [джерело] [призначення] [файли] [параметри]
rem Скопіювати папку
robocopy C:\Source D:\Destination

rem Скопіювати тільки .docx файли
robocopy C:\Docs D:\Backup *.docx

rem Скопіювати кілька типів файлів
robocopy C:\Docs D:\Backup *.docx *.xlsx *.pdf

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

Параметр Що робить
/E Копіювати всі підпапки включно з порожніми
/S Копіювати підпапки (без порожніх)
/MIR Дзеркало — робить призначення ідентичним джерелу (видаляє зайві файли)
/COPYALL Копіювати всі атрибути (права, часові мітки)
/COPY:DAT Копіювати дані, атрибути і часові мітки
/MOV Переміщення (видаляє оригінал)
/R:3 3 спроби при помилці (замість 1 мільйона за замовчуванням!)
/W:5 Чекати 5 секунд між спробами
/LOG:file.txt Зберегти лог у файл
/NP Не показувати відсоток виконання
/XF Виключити файли за маскою
/XD Виключити папки
/MT:8 Багатопотокове копіювання (8 потоків)

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

Резервне копіювання з логом

robocopy C:\Users\ІМ'Я\Documents D:\Backup\Documents ^
  /E /COPYALL /R:3 /W:5 ^
  /LOG:D:\Backup\backup-log.txt ^
  /NP /TEE

/TEE — виводить і в консоль і в файл одночасно.

Дзеркальна синхронізація

rem УВАГА: /MIR видаляє файли в призначенні яких немає в джерелі
robocopy C:\Source D:\Destination /MIR /R:3 /W:5

Синхронізація тільки змінених файлів (інкрементальна)

robocopy C:\Source D:\Destination /E /XO /R:3 /W:5

/XO — пропустити файли які старші в призначенні (копіювати тільки нові або змінені).

Копіювання по мережі з відновленням

robocopy \\server\share D:\LocalCopy /E /COPYALL /R:5 /W:10 /Z /MT:4

/Z — режим відновлення при збої (restartable mode). /MT:4 — 4 потоки для швидшого копіювання по мережі.

Виключити папки і файли

robocopy C:\Source D:\Destination /E ^
  /XD "node_modules" ".git" "temp" ^
  /XF "*.tmp" "*.log" "thumbs.db"

Автоматичне резервне копіювання через Task Scheduler

Створи файл backup.bat:

@echo off
set SOURCE=C:\Users\%USERNAME%\Documents
set DEST=D:\Backups\Documents
set LOG=D:\Backups\logs\backup-%date:~-4,4%%date:~-7,2%%date:~0,2%.txt

robocopy "%SOURCE%" "%DEST%" /E /COPYALL /R:3 /W:5 /LOG:"%LOG%" /NP

Додай в Task Scheduler: Автоматизація через PowerShell і Task Scheduler


Коди завершення Robocopy

Robocopy повертає код що показує що відбулось:

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

Коди 0–7 — успіх. 8 і вище — є проблеми.

# Перевірити код в скрипті
robocopy C:\Source D:\Dest /E /R:3 /W:5
if ($LASTEXITCODE -ge 8) {
    Write-Output "ПОМИЛКА: деякі файли не скопійовані"
    exit 1
} else {
    Write-Output "Успішно завершено"
}

Порівняння папок без копіювання

rem Показати що відрізняється без реального копіювання
robocopy C:\Source D:\Destination /E /L /NP

/L — list only, тільки показати що буде скопійовано.


Підсумок

/E /R:3 /W:5 — базові параметри для надійного копіювання. /MIR — дзеркало (обережно — видаляє зайве). /XO — тільки нові файли (інкрементальний backup). /MT:8 — швидше по мережі. Додай в Task Scheduler для автоматичного резервного копіювання.

Related articles

← All articles