2 min read

There is a utility known as robocopy in windows ...

Mallim •

This utility is pretty interesting if you want to do bulk copy via command line in windows.

This post is my quick reference on it.

robocopy is a wonderful alternative in Windows (though not par with rsync) available out of box, native command simple syntax and well documented (robocopy /?).

You can compile this robocopy operations in a batch file and run through Task scheduler to automate sync. It works! No more third party tools for sync!

Example 1

robocopy <source_dir> <target_dir> /DCOPY:DA /MIR /FFT /Z /XA:SH /R:0 /TEE /XJD /XD AppData /XD OneDrive /XD SkyDrive*

Syntax Remarks
<source_dir> It is the directory which I want to sync
<target_dir>
/DCOPY:DA Copy Data and Attributes.
/MIR It mirrors the entire directory tree <source_dir> in <target_dir> . It also deletes destination files which no longer exists in <source_dir>.
/FFT This is to support FAT file systems which needs a tweak to support timestamp validation by copy logic in robocopy tool.
/Z Copy operation can be resumed after termination.
/XA:SH Exclude System (S) files and Hidden (H) files
/R:0 Number of retries on failed copy operation. By default it does retry for 1 million times, which is useful in poor network.
/TEE Output to console window and log file – In this case I haven’t used log file. You have to add “/LOG:file” option too.
/XJD excluding Junction Points (symbolic link) of directories from copying
/XD AppData /XD OneDrive /XD SkyDrive – *list of directories to be excluded from copying

Example 2

robocopy \SourceServer\Share \DestinationServer\Share /MIR /FFT /Z /XA:H /W:5 >>

Syntax Remarks
/MIR specifies that robocopy should mirror the source directory and the destination directory. Beware that this may delete files at the >> destination.
/FFT uses fat file timing instead of NTFS. This means the granularity is a bit less precise. For across-network share operations this seems to be much more reliable - just don’t rely on the file timings to be completely precise to the second.
/Z ensures robocopy can resume the transfer of a large file in mid-file instead of restarting.
/XA:H makes robocopy ignore hidden files, usually these will be system files that we’re not interested in.
/W:5 reduces the wait time between failures to 5 seconds instead of the 30 second default.