How to use Robocopy to transfer files
There are many ways to get a file from Point A to Point B on Windows. You can simply drag and drop with the GUI, use PowerShell and can also use a cmd command called robocopy.
While these are all good options, depending on the amount of data you need to transfer, using File Explorer, the process can take a long time. If you want to copy a lot of files faster and more reliably, you need a better solution, such as Robocopy.
The GUI is also fine if you’re only moving a few files, but for larger and more complex migrations, Robocopy is good way to go….
Robocopy (or Robust File Copy) for Windows is a useful utility built into Windows that allows you to efficiently copy or transfer one, 10 or 1,000,0000 files and folders all in one go. Not only can you copy/move files from one place to another, you can also sync folders destinations, too.
Robocopy command options explained
To get started with robocopy, open up a Windows command prompt or PowerShell and type robocopy /?. You are soon inundated with all of the options available:
Syntax
ROBOCOPY Source_folder Destination_folder [files_to_copy] [options]
Key
file(s)_to_copy : A list of files or a wildcard.
(defaults to copying *.*)
Source options
/S : Copy Subfolders.
/E : Copy Subfolders, including Empty Subfolders.
/COPY:copyflag[s] : What to COPY (default is /COPY:DAT)
(copyflags : D=Data, A=Attributes, T=Timestamps
S=Security=NTFS ACLs, O=Owner info, U=aUditing info)
File Data (D) always includes file Timestamps (T).
/SEC : Copy files with SECurity (equivalent to /COPY:DATS).
/DCOPY:T : Copy Directory Timestamps.
/COPYALL : Copy ALL file info (equivalent to /COPY:DATSOU).
/NOCOPY : Copy NO file info (useful with /PURGE).
/A : Copy only files with the Archive attribute set.
/M : like /A, but remove Archive attribute from source files.
/LEV:n : Only copy the top n LEVels of the source tree.
/MAXAGE:n : MAXimum file AGE - exclude files older than n days/date.
/MINAGE:n : MINimum file AGE - exclude files newer than n days/date.
(If n < 1900 then n = no of days, else n = YYYYMMDD date).
/FFT : Assume FAT File Times (2-second date/time granularity).
/256 : Turn off very long path (> 256 characters) support.
Copy options
/L : List only - don’t copy, timestamp or delete any files.
/MOV : MOVe files (delete from source after copying).
/MOVE : Move files and dirs (delete from source after copying).
/sl : Copy file symbolic links instead of the target [see notes below].
/Z : Copy files in restartable mode (survive network glitch).
/B : Copy files in Backup mode.
/J : Copy using unbuffered I/O (recommended for large files). ##
/NOOFFLOAD : Copy files without using the Windows Copy Offload mechanism. ##
/ZB : Use restartable mode; if access denied use Backup mode.
/EFSRAW : Copy any encrypted files using EFS RAW mode.
Performance tweaks
/IPG:n : Inter-Packet Gap (ms), to free bandwidth on slow lines.
/MT[:n] : Multithreaded copying, n = no. of threads to use (1-128)
default = 8 threads, not compatible with /IPG and /EFSRAW
Redirecting output using /LOG is recommended for even better performance.
/R:n : Number of Retries on failed copies - default is 1 million.
/W:n : Wait time between retries - default is 30 seconds.
/REG : Save /R:n and /W:n in the Registry as default settings.
/TBD : Wait for sharenames To Be Defined (retry error 67).
Destination options
/A+:[RASHCNET] : Set file Attribute(s) on destination files + add.
/A-:[RASHCNET] : UnSet file Attribute(s) on destination files - remove.
/FAT : Create destination files using 8.3 FAT file names only.
/CREATE : CREATE directory tree structure + zero-length files only.
/DST : Compensate for one-hour DST time differences.
/PURGE : Delete dest files/folders that no longer exist in source.
/MIR : MIRror a directory tree - equivalent to /PURGE plus all subfolders (/E)
Logging options
/L : List only - don’t copy, timestamp or delete any files.
/NP : No Progress - don’t display % copied.
/unicode : Display the status output as Unicode text.
/LOG:file : Output status to LOG file (overwrite existing log).
/UNILOG:file : Output status to Unicode Log file (overwrite)
/LOG+:file : Output status to LOG file (append to existing log).
/UNILOG+:file : Output status to Unicode Log file (append)
/TS : Include Source file Time Stamps in the output.
/FP : Include Full Pathname of files in the output.
/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.
/TEE : Output to console window, as well as the log file.
/NJH : No Job Header.
/NJS : No Job Summary.
Repeated Copy Options
/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 can be started.
/PF : Check run hours on a Per File (not per pass) basis.
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.
Advanced options
/SECFIX : FIX file SECurity on all files, even skipped files.
When using /SECFIX, specify the type of security information you want to copy by
also using one of these options: /COPYALL /COPY:O /COPY:S /COPY:U /SEC
/TIMFIX : FIX file TIMes on all files, even skipped files.
/XO : eXclude Older - if destination file exists and is the same date
or newer than the source - don’t bother to overwrite it.
/XC : eXclude Changed files
/XN : eXclude Newer files
/XL : eXclude "Lonely" files and dirs (present in source but not destination)
This will prevent any new files being added to the destination.
/XX : eXclude "eXtra" files and dirs (present in destination but not source)
This will prevent any deletions from the destination. (this is the default)
/XF file [file]... : eXclude Files matching given names/paths/wildcards.
/XD dirs [dirs]... : eXclude Directories matching given names/paths.
XF and XD can be used in combination e.g.
ROBOCOPY c:\source d:\dest /XF *.doc *.xls /XD c:\unwanted /S
/IA:[RASHCNETO] : Include files with any of the given Attributes.
/XA:[RASHCNETO] : eXclude files with any of the given Attributes.
/IS : Include Same, overwrite files even if they are already the same.
/IT : Include Tweaked files.
/XJ : eXclude Junction points from source. (included by default).
/XJD : Exclude junction points from source directories.
/XJF : Exclude junction points from source files.
/MAX:n : MAXimum file size - exclude files bigger than n bytes.
/MIN:n : MINimum file size - exclude files smaller than n bytes.
/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).
/BYTES : Print sizes as bytes.
/X : Report all eXtra files, not just those selected & copied.
/V : Produce Verbose output log, showing skipped files.
/ETA : Show Estimated Time of Arrival of copied files.
/DEBUG : Show debug volume information (undocumented)
Windows Robocopy Command with Examples To Copy Files In Safe Way
Robocopy has a lot of features that we can use to copy data faster, Below we’re using the most common options to make copy reliable and fast.
- /S — Copy sub directories, but not empty ones.
- /E — Copy Sub directories, including empty ones.
- /Z — Copy files in restart able mode.
- /ZB — Uses restart able mode, if access denied use backup mode.
- /R:5 — Retry 5 times (you can specify a different number, default is 1 million).
- /W:5 — Wait 5 seconds before retrying (you can specify a different number, the default is 30 seconds).
- /TBD — Wait for share names To Be Defined (retry error 67).
- /NP — No Progress – don’t display percentage copied.
- /V — Produce verbose output, showing skipped files.
- /MT:16 — Do multi threaded copies with n threads (By default is 8).
/MT, which is a feature that enables Robocopy to copy files in multithreaded mode, It means that Robocopy will try to copy eight files at the same time, but the tool supports 1 to 128 threads.
Example:
robocopy "source Path" "destination Path" /E /Z /ZB /R:5 /W:5 /TBD /NP /V /MT:16