Robocopy jest wbudowany w Windows i świetnie radzi sobie z dużymi katalogami, przerwanymi transferami oraz kopiowaniem przez sieć. Jednocześnie jedna źle użyta opcja może usunąć pliki z katalogu docelowego. Dlatego najważniejszą funkcją na początku nie jest /MIR, lecz tryb testowy /L.
Podstawowa składnia
robocopy "ŹRÓDŁO" "CEL" [PLIKI] [OPCJE]
Przykładowa zwykła kopia folderu Dokumenty na dysk E::
robocopy "C:\Users\Eryk\Documents" "E:\Backup\Documents" /E
Opcja /E kopiuje podfoldery, również puste. Robocopy domyślnie nie jest klasycznym narzędziem do wersjonowanego backupu — kopiuje dane z jednego miejsca do drugiego. Jeśli przypadkowo nadpiszesz plik, druga kopia może również zostać zastąpiona.
Najpierw uruchom symulację
Dodaj /L, aby zobaczyć plan bez kopiowania i usuwania danych:
robocopy "C:\Dane" "E:\Backup\Dane" /E /L
Przeczytaj podsumowanie. Sprawdź, czy źródło i cel nie zostały zamienione, czy lista katalogów wygląda właściwie i czy polecenie nie zamierza dotknąć danych spoza projektu.
Tryb /L powinien być obowiązkowy przy pierwszym uruchomieniu nowego polecenia, a szczególnie przy /MIR, /PURGE i pracy na udziałach sieciowych.
Rozsądny zestaw opcji do zwykłej kopii
robocopy "C:\Dane" "E:\Backup\Dane" /E /COPY:DAT /DCOPY:T /R:2 /W:5 /MT:8 /XJ /TEE /LOG:"E:\Backup\robocopy.log"
Co oznaczają opcje:
| Opcja | Działanie |
|---|---|
/E |
kopiuje podfoldery, również puste |
/COPY:DAT |
kopiuje dane, atrybuty i czas pliku |
/DCOPY:T |
zachowuje czas katalogów |
/R:2 |
ponawia nieudaną operację dwa razy |
/W:5 |
czeka pięć sekund między próbami |
/MT:8 |
używa ośmiu wątków kopiowania |
/XJ |
pomija punkty połączeń katalogów |
/TEE |
pokazuje wynik i zapisuje go do logu |
/LOG |
zapisuje raport do wskazanego pliku |
Domyślna liczba ponowień Robocopy jest bardzo duża. Jawne ustawienie /R i /W zapobiega sytuacji, w której zadanie przez wiele godzin próbuje skopiować jeden zablokowany plik.
/MIR nie oznacza „zrób bezpieczny backup”
Opcja /MIR tworzy lustrzane odbicie. Kopiuje zmiany, ale również usuwa z celu elementy, których nie ma już w źródle. Jeżeli przez pomyłkę wskażesz pusty folder źródłowy, możesz usunąć dane z katalogu docelowego.
Przed użyciem:
- uruchom identyczne polecenie z
/L, - sprawdź źródło i cel,
- miej niezależną kopię danych,
- nie traktuj lustra jako jedynego backupu.
Przykład testu synchronizacji:
robocopy "D:\Zdjecia" "\\NAS\Backup\Zdjecia" /MIR /L /R:2 /W:5 /XJ
Dopiero po analizie usuń /L.
Kopiowanie przez sieć
Robocopy obsługuje ścieżki UNC:
robocopy "D:\Zdjecia" "\\192.168.1.50\backup\Zdjecia" /E /Z /R:3 /W:10 /MT:8
Opcja /Z uruchamia tryb wznawialny, przydatny przy niestabilnym połączeniu. Wielowątkowość /MT może przyspieszyć kopiowanie wielu małych plików, ale zbyt wysoka wartość nie zawsze pomaga i potrafi mocno obciążyć wolny NAS lub HDD.
Hasła do udziału sieciowego nie powinny znajdować się bezpośrednio w skrypcie. Użyj bezpiecznie zapisanych poświadczeń Windows albo konta przeznaczonego do backupu z ograniczonymi uprawnieniami.
Wykluczanie katalogów i plików
Przykład pomijający katalogi tymczasowe i pliki .tmp:
robocopy "C:\Projekt" "E:\Backup\Projekt" /E /XD "node_modules" ".git" /XF "*.tmp" /L
/XD wyklucza katalogi, a /XF pliki. Zwróć uwagę, że dopasowanie i ścieżki mogą zachowywać się inaczej zależnie od struktury źródła. Ponownie: najpierw /L i kontrola raportu.
Jak czytać kod zakończenia?
Robocopy nie stosuje zasady „każda wartość inna niż zero to błąd”. Kody od 0 do 7 zwykle oznaczają brak zmian, skopiowane pliki lub wykryte różnice. Kod 8 lub wyższy wskazuje co najmniej jedną nieudaną operację.
W PowerShell kod ostatniego programu sprawdzisz przez:
$LASTEXITCODE
Prosty warunek do zadania automatycznego:
if ($LASTEXITCODE -ge 8) {
Write-Error "Robocopy zakończyło się błędem: $LASTEXITCODE"
}
Nie oceniaj powodzenia tylko po ostatniej linijce. Zachowuj logi i sprawdzaj liczbę plików nieudanych w podsumowaniu.
Robocopy a prawdziwy backup
Kopia lustrzana chroni przed awarią jednego dysku, ale słabo chroni przed:
- przypadkowym skasowaniem pliku,
- ransomware,
- uszkodzeniem nadpisanym w obu lokalizacjach,
- kradzieżą lub przepięciem niszczącym oba urządzenia.
Ważne dane powinny mieć wersjonowanie i więcej niż jedną kopię. Robocopy może być jednym z elementów strategii 3-2-1, ale nie zastępuje całego systemu backupu.
Gotowy bezpieczny schemat pracy
- Utwórz polecenie z
/L. - Sprawdź źródło, cel, wykluczenia i planowane usunięcia.
- Uruchom pierwszą rzeczywistą kopię bez
/MIR. - Przejrzyj log i kod zakończenia.
- Porównaj kilka losowych plików.
- Dopiero później automatyzuj zadanie.
- Regularnie testuj odtworzenie.