robocopy (Robust File Copy) to wbudowane w Windows narzędzie wiersza poleceń do kopiowania i synchronizacji plików oraz całych drzew katalogów. W przeciwieństwie do zwykłego copy czy xcopy potrafi wznawiać przerwane transfery, ponawiać próby przy chwilowych błędach sieci, zachowywać atrybuty i uprawnienia, a także lustrzanie odwzorować folder źródłowy w docelowym. To narzędzie pierwszego wyboru przy migracji danych, backupach i synchronizacji udziałów sieciowych.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: robocopy <źródło> . Jeśli nie podasz wzorca plików, robocopy domyślnie kopiuje wszystko (*.*) z bieżącego poziomu.
/e— kopiuje podkatalogi, łącznie z pustymi (/srobi to samo, ale pomija puste)./mir— tryb lustra: odpowiednik/e+/purge, czyli kopiuje wszystko i kasuje w celu to, czego nie ma w źródle./z— tryb wznawialny (restartable), przydatny przy dużych plikach przez niestabilną sieć./copyall— kopiuje wszystkie informacje o pliku (odpowiednik/copy:DATSOU: dane, atrybuty, znaczniki czasu, uprawnienia NTFS, właściciel, audyt)./mt:n— kopiowanie wielowątkowe,nod 1 do 128 (domyślnie 8); mocno przyspiesza przy wielu małych plikach./r:ni/w:n— liczba ponowień i czas oczekiwania w sekundach między nimi./l— tryb podglądu: tylko wypisuje, co by zrobił, nic nie kopiuje (świetne do testu przed/mir)./log:plik.txt— zapisuje wynik do pliku zamiast tylko na ekran.
Przykłady użycia
robocopy C:\Dane D:\Backup /e— kopiuje cały katalogDanewraz z podfolderami (także pustymi) doBackup.robocopy \\serwer\udzial D:\Kopia /z /r:3 /w:5— kopiowanie z udziału sieciowego w trybie wznawialnym, z 3 ponowieniami co 5 sekund.robocopy C:\Projekt D:\Lustro /mir /mt:16 /log:sync.txt— pełna synchronizacja lustrzana na 16 wątkach z logiem do pliku.robocopy C:\Stare D:\Nowe /mir /l— pokazuje, co zostałoby skopiowane i skasowane, bez ruszania danych. Zawsze rób to przed prawdziwym/mir.robocopy C:\Foto D:\Foto *.jpg /copyall— kopiuje tylko pliki.jpgz zachowaniem uprawnień NTFS i właściciela.
Częste błędy i pułapki
Największa mina to /mir: usuwa w celu wszystko, czego nie ma w źródle. Pomylisz kolejność argumentów albo wskażesz pusty katalog źródłowy i wyczyścisz backup. Dlatego najpierw /l. Druga pułapka to domyślne ustawienia /r i /w — bez ich podania robocopy ponawia próbę milion razy, czekając 30 sekund, więc przy jednym zablokowanym pliku potrafi „wisieć” godzinami. Pamiętaj też, że /copyall wymaga uprawnień do odczytu informacji audytu i właściciela — bez praw administratora dostaniesz błędy. I nie zdziw się kodem wyjścia: robocopy zwraca 0-7 jako sukces (np. 1 = skopiowano pliki), a dopiero wartości od 8 w górę oznaczają błąd — odwrotnie niż większość poleceń.
Powiązane komendy: xcopy i copy (prostsze kopiowanie), cp oraz rsync w świecie Linuksa, a także icacls do zarządzania uprawnieniami NTFS.