Robocopy - skrypt kopii zapasowej ==== Ważne: to działa w oknie poleceń `cmd` (czarnym) lub `PowerShell`, a także w wierszu polecenia w trybie awaryjnym Windows. robocopy "D:\Dokumenty" "F:\Backup\Dokumenty" *.* /E /MIR /XJD /XA:SH /R:1 /W:3 /COPYALL /EFSRAW /ZB `/E` - kopiuj podfoldery, także puste `/MIR` - mirror; usuwa w kopii to co usunięte w źródle `/XJD` - pomijanie linków symbolicznych - junction directory `/XA:SH` - pomiń pliki systemowe i ukryte `/R:1 /W:3` - powtarzanie, czekanie (sek.) `/COPYALL` - kopiuj wszystkie inf. o pliku (= `/COPY:DATSOU`; ->do Linux użyj: `/COPY:DT`) `/EFSRAW` - kopiuj pliki zaszyfrowane w trybie EFS RAW mode (nie używaj w tym przypadku `/MT`) `/ZB` - Tryb restartowania; gdy plik zablokowany użyj trybu Backup `/LOG:C:\LogFileName.txt /TEE /NP` (`/NP` = NOT show the progress - nie pokazuj postępu w log) `/LOG+:C:\LogFileName.txt /TEE /NP` `/TEE` - log na w konsoli jak i zapisywany do pliku (`/XD "folder"` `/XF "plik"` - pomiń podany folder lub plik) Kolejny przykład - kopiowanie całych dysków z wykluczeniem pewnych folderów (uruchom w trybie administratora): robocopy a:\. b:\. *.* /E /XJ /XA:SH /R:1 /W:3 /COPYALL /DCOPY:DAT /MT /ZB /XO /XD "a:\$RECYCLE.BIN" "a:\tmp" "a:\Recovery" "a:\System Volume Information" /TEE /NFL /NDL /LOG+:robocopy_log.txt W tym przykładzie `a:` i `b:` to nazwa dysku źródłowego i docelowego. Uwaga 1: Na koniec nazwy foldera ukośnik **nie może występować**. Stąd odwołanie do głównych folderów dysku przez `\. `. Uwaga 2: Gdy pliki zaszyfrowane mają w kopii pozostać zaszyfrowane to zamiast opcji `/MT` (MultiThreaded) należy wstawić opcję `/EFSRAW`. (Można też czasowo wyłączyć program antywirusowy). Uwaga 3: Pomimo zmiany kodowania znaków w oknie poleceń (`chcp 65001`) zdaje się, że `/LOG` jest i tak w kodowaniu `OEM852`. `/UNILOG` ma dawać kodowanie Unicode, ale chyba wycina polskie znaki (?). Opcje `/NFL /NDL` powodują, że plik LOGu nie jest olbrzymi, a zawiera ważne informacje o ewentualnych problemach. Ciekawostka - opcja `/DCOPY:DAT` powoduje ustawienie dat folderów jak źródłowe, nawet jeśli żadne pliki nie wymagają skopiowania, bo np. są nie-nowsze. Można więc tego używać do naprawy dat folderów na dysku docelowym. `/TEE` - komunikaty zarówno na konsoli jak i w pliku Log. `/XO` - eXclude Older - jeśli plik docelowy istnieje i ma tę samą datę lub nowszą niż źródło - nie nadpisuj `/XJ` - pomijaj dowiązania symboliczne (opcja domyślna - można nie podawać) `/XD` - pomijaj foldery wymienione na liście `/NFL` - No File List - w logu nie pokazuj nazw plików `/NDL` - No Directory List - w logu nie pokazuj nazw folderów Inne przykłady `robocopy`: ---- Lista plików większych niż....: ROBOCOPY . "..\_%date%_%time::=.%" *.* /L /S /nDL /nC /nJH /nJS /min:44444444 Folder docelowy pusty!; /L - tylko wyświetlaj; min:bajtów Lista plików nie starszych niż (maxage:n; gdy n < 1900 to n = liczba dni, inaczej data n = YYYYMMDD): ROBOCOPY . "..\_%date%_%time::=.%" *.* /L /S /nDL /nC /nJH /nJS /nS /maxage:7 /nS - bez rozmiaru, więc dostajemy same nazwy plików; albo /TS - będzie rozmiar i czas Usuwając /L dostaniemy kopiowanie wybranych plików * https://ss64.com/nt/robocopy.html * https://docs.microsoft.com/pl-pl/windows-server/administration/windows-commands/robocopy Create a backup script using Robocopy ==== other notes ----- (/B : Copy files in Backup mode) ( /XJ Exclude junction points. This is something funky in Windows. If you don’t include it, when you backup a user profile, it will run forever, because it enters an infinite loop. Just trust me in this one. ) (/NOOFFLOAD : Copy files without using the Windows Copy Offload mechanism. ##) ( /FFT - gdy kopia na Linux ) ( /MOVE - file or dir - don't use /E; note the MOVE option will fail if any files are open and locked) ( /L : List only ) ... /ZB tells robocopy to use restartable mode (which you want for large files, especially over WAN/unstable connections, since it’ll try to pick up where it left off if the connection gets dropped or there’s corruption mid-copy), and if access is denied, then it’ll use Backup mode, which allows you to copy files you might otherwise not have access to, assuming it’s being run under an account with sufficient privileges (e.g., member of Backup Operators, Administrators, etc.). (NOTE: the /Z switch sometimes slows down the copy speed, so if you don’t need it, don’t use it, especially if you feel like your Robocopy job is taking longer than it should. Sometimes there’s no speed difference, and sometimes it can be dramatic.) Robocopy Tips when using /b switch ---- * Ensure that your migration account has the 'Backup files and directories' and 'Restore files and directories' right under User Rights and Assignments on BOTH the source and target Windows server. * Place the /b option (copy files/folders as if Robocopy is running as a backup agent skipping permission restrictions) in the Robocopy Syntax at the END OF THE ROBOCOPY COMMAND LINE in order for this feature to work. * Even if you're logged onto the server as a Domain Admin, then run your Robocopy command from a command window that you've opened with the 'Run As Administrator' option or start your Robocopy batch file with the 'Run As Administrator' option. robocopy.exe \\sourcepath \\target-path /MIR /xo /xj /dcopy:t /copy:datso /secfix /v /FP /MT /e /z /r:0 /w:0 /log+:c:\temp\logfile.log /b /zb (?) Backup a Server: The script below copies data from FileServ1 to FileServ2, the destination holds a full mirror along with file security info. When run regularly to synchronize the source and destination, robocopy will only copy those files that have changed (change in time stamp or size.) @ECHO OFF SETLOCAL SET _source=\\FileServ1\e$\users SET _dest=\\FileServ2\e$\BackupUsers SET _what=/COPYALL /B /MIR :: /COPYALL :: COPY ALL file info :: /B :: copy files in Backup mode. :: /MIR :: MIRror a directory tree SET _options=/R:0 /W:0 /LOG:C:\batch\RoboLog.txt /NFL /NDL :: /R:n :: number of Retries :: /W:n :: Wait time between retries :: /LOG :: Output log file :: /NFL :: No file logging :: /NDL :: No dir logging ROBOCOPY %_source% %_dest% %_what% %_options% https://variatkowo.pl/poradniki/uzywamy-polecenia-robocopy-do-wykonania-backupu-danych/ https://caughtinpixels.com/how-to-create-a-backup-script-using-robocopy/ https://www.techrepublic.com/article/how-to-quickly-back-up-just-your-data-in-windows-10-with-robocopys-multi-threaded-feature/ https://social.technet.microsoft.com/Forums/windowsserver/en-US/fe7e8b33-8587-476a-9595-da5721d6d494/robocopy-tips-when-using-b-switch?forum=winserverMigration http://www.rainingforks.com/blog/2015/suggested-robocopy-switches-explained.html