Search notes:

Robocopy.exe

Copy files and directory trees
ROBOCOPY source destination [file [file]…] [options]
The parent directory of the directory into which Robocopy is supposed to copy a source tree to must already exist, apparently there is switch to make Robocopy create such a folder.

Command line options

A very useful command line option is /L: it lists the files that match the criterias without copying them. Thus, this flag might be used to double check if an operation corresponds to the desired outcome.

Copy options

/S copy Subdirectories, but not empty ones (S stands for subdirectories)
/E copy subdirectories, including empty ones (E stands for empty)
/LEV:n only copy the top n LEVels of the source directory tree.
/Z copy files in restartable mode.
/B copy files in Backup mode.
/ZB use restartable mode; if access denied use Backup mode.
/J copy using unbuffered I/O (recommended for large files).
/EFSRAW copy all encrypted files in EFS RAW mode.
/COPY:copyflag[s] what to COPY for files (default is /COPY:DAT). (copyflags : D=Data, A=Attributes, T=Timestamps, X=Skip alt data streams). (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).
/SEC copy files with SECurity (equivalent to /COPY:DATS).
/COPYALL COPY ALL file info (equivalent to /COPY:DATSOU).
/NOCOPY COPY NO file info (useful with /PURGE).
/SECFIX FIX file SECurity on all files, even skipped files.
/TIMFIX FIX file TIMes on all files, even skipped files.
/PURGE delete dest files/dirs that no longer exist in source.
/MIR MIRror a directory tree (equivalent to /E plus /PURGE).
/MOV MOVe files (delete from source after copying).
/MOVE MOVE files AND dirs (delete from source after copying).
/A+:[RASHCNET] add the given Attributes to copied files.
/A-:[RASHCNET] remove the given Attributes from copied files.
/CREATE CREATE directory tree and zero-length files only.
/FAT create destination files using 8.3 FAT file names only.
/256 turn off very long path (> 256 characters) support.
/MON:n MONitor source; run again when more than n changes seen.
/MOT:m MOnitor source; run again in m minutes Time, if changed.
/RH:hhmm-hhmm Run Hours - times when new copies may be started.
/PF check run hours on a Per File (not per pass) basis.
/IPG:n Inter-Packet Gap (ms), to free bandwidth on slow lines.
/SJ copy Junctions as junctions instead of as the junction targets.
/SL copy Symbolic Links as links instead of as the link targets.
/MT[:n] Do multi-threaded copies with n threads (default 8). n must be at least 1 and not greater than 128. This option is incompatible with the /IPG and /EFSRAW options. Redirect output using /LOG option for better performance.
/DCOPY:copyflag[s] what to COPY for directories (default is /DCOPY:DA). (copyflags : D=Data, A=Attributes, T=Timestamps, E=EAs, X=Skip alt data streams).
/NODCOPY COPY NO directory info (by default /DCOPY:DA is done).
/NOOFFLOAD copy files without using the Windows Copy Offload mechanism.
/COMPRESS Request network compression during file transfer, if applicable.

File Selection Options

/A copy only files with the Archive attribute set.
/M copy only files with the Archive attribute and reset it.
/IA:[RASHCNETO] Include only files with any of the given Attributes set.
/XA:[RASHCNETO] eXclude files with any of the given Attributes set.
/XF file [file]… eXclude Files matching given names/paths/wildcards.
/XD dirs [dirs]… eXclude Directories matching given names/paths.
/XC eXclude Changed files.
/XN eXclude Newer files.
/XO eXclude Older files.
/XX eXclude eXtra files and directories.
/XL eXclude Lonely files and directories.
/IS Include Same files.
/IT Include Tweaked files.
/MAX:n MAXimum file size - exclude files bigger than n bytes.
/MIN:n MINimum file size - exclude files smaller than n bytes.
/MAXAGE:n MAXimum file AGE - exclude files older than n days/date.
/MINAGE:n MINimum file AGE - exclude files newer than n days/date.
/MAXLAD:n MAXimum Last Access Date - exclude files unused since n.
/MINLAD:n MINimum Last Access Date - exclude files used since n. (If n < 1900 then n = n days, else n = YYYYMMDD date).
/FFT assume FAT File Times (2-second granularity).
/DST compensate for one-hour DST time differences.
/XJ eXclude symbolic links (for both files and directories) and Junction points.
/XJD eXclude symbolic links for Directories and Junction points.
/XJF eXclude symbolic links for Files.
/IM Include Modified files (differing change times).

Retry Options :

/R:n number of Retries on failed copies: default 1 million.
/W:n Wait time between retries: default is 30 seconds.
/REG Save /R:n and /W:n in the registry registry as default settings.
/TBD Wait for sharenames To Be Defined (retry error 67).
/LFSM Operate in low free space mode, enabling copy pause and resume (see Remarks).
/LFSM:n[KMG] /LFSM, specifying the floor size in n [K:kilo,M:mega,G:giga] bytes.

Logging Options

/L List only - don't copy, timestamp or delete any files.
/X report all eXtra files, not just those selected.
/V produce Verbose output, showing skipped files.
/TS include source file Time Stamps in the output.
/FP include Full Pathname of files in the output.
/BYTES Print sizes as bytes.
/NS No Size - don't log file sizes.
/NC No Class - don't log file classes.
/NFL No File List - don't log file names.
/NDL No Directory List - don't log directory names.
/NP No Progress - don't display percentage copied.
/ETA show Estimated Time of Arrival of copied files.
/LOG:file output status to LOG file (overwrite existing log).
/LOG+:file output status to LOG file (append to existing log).
/UNILOG:file output status to LOG file as UNICODE (overwrite existing log).
/UNILOG+:file output status to LOG file as UNICODE (append to existing log).
/TEE output to console window, as well as the log file.
/NJH No Job Header.
/NJS No Job Summary.
/UNICODE output status as UNICODE.

Job Options

/JOB:jobname take parameters from the named JOB file.
/SAVE:jobname SAVE parameters to the named job file
/QUIT QUIT after processing command line (to view parameters).
/NOSD NO Source Directory is specified.
/NODD NO Destination Directory is specified.
/IF Include the following Files.

Syncing two directories

robocopy /mir    S:\ource\dir D:\estination\dir
Copy only files with the archive bit set, and then reset it:
robocopy /mir /m S:\ource\dir D:\estination\dir

Test

rmdir /s /q robocopy-test
mkdir robocopy-test

mkdir robocopy-test\src

cd robocopy-test

mkdir src\dir-one
mkdir src\dir-two
mkdir src\dir-two\a
mkdir src\dir-two\b

echo x > src\dir-one\x
echo p > src\dir-two\a\p
echo q > src\dir-two\a\q

rem --------------------

mkdir dst
mkdir dst\dir-two
mkdir dst\dir-two\a
mkdir dst\dir-two\to-be-deleted

echo d > dst\dir-two\to-be-deleted\d

rem
rem    Following file is expected to contain x after syncing
rem
echo y > dst\dir-one\x

rem --------------------

robocopy /mir .\src .\dst

rem
rem Compare directory structures
rem 

tree /f .\scr
tree /f .\dst

type dst\dir-one\x

Copy directory structure, but only certain file types

robocopy S:\ource\dir D:\estination\dir *.docx *.xlsx /s

Recursively compare files

According to this superuser answer, robocopy can be used to recursively compare files that differ by timestamp or size (but not by content!?) like so:
robocopy.exe source target /l /e /zb

See also

The cmd.exe built-in command copy and xcopy.exe
The Linux shell command rsync
Apparently, robocopy.exe also comes with the Windows Server 2003 Resource Kit Tools, see C:\Program Files (x86)\Windows Resource Kits\Tools.

Index