Robocopy

Robocopy is a robust file copy command for the Windows command line. It allows users to copy files, directories, and even drives from one location to another.

Robocopy, for 'Robust File Copy', is a command-line directory and/or file replication command for Microsoft Windows. Robocopy functionally replaces Xcopy, with more options. Created by Kevin Allen 1 and first released as part of the Windows NT 4.0 Resource Kit, it has been a standard feature of Windows since Windows Vista and Windows Server. Although Robocopy itself is a command-line tool, Microsoft TechNet provides a GUI front-end call Robocopy GUI. It was developed by Derk Benisch, a systems engineer with the MSN Search group at Microsoft, and required.NET Framework 2.0.

Availability

Robocopy Options

Robocopy is an external command that is available for the following Microsoft operating systems as robocopy.exe.

  • Windows NT (In resource kit)
  • Windows 2000 (In resource kit)
  • Windows Server 2008

Robocopy syntax

Download
sourceSource directory (drive:path or serversharepath).
destinationDestination directory (drive:path or serversharepath).
fileFile(s) to copy (names/wildcards: default is '*.*').

Copy options

/SCopy subdirectories, but not the empty ones.
/ECopy subdirectories, including the empty ones.
/LEV:nOnly copy the top n levels of the source directory tree.
/ZCopy files in restartable mode.
/BCopy files in backup mode.
/ZBUse restartable mode. If access denied, use backup mode.
/EFSRAWCopy 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).
(S=Security=NTFS ACLs, O=Owner info, U=aUditing info).
/DCOPY:TCOPY the directory timestamps.
/SECCopy files with security (equivalent to /COPY:DATS).
/COPYALLCopy all file info (equivalent to /COPY:DATSOU).
/NOCOPYCopy no file info (useful with /PURGE).
/SECFIXFix file security on all files, even skipped files.
/TIMFIXFix file times on all files, even the skipped ones.
/PURGEDelete dest files/dirs that no longer exist in the source.
/MIRMirror a directory tree (equivalent to /E plus /PURGE).
/MOVMove files (delete from the source after copying).
/MOVEMove files and dirs (delete from the source after copying).
/A+:[RASHCNET]Add the given attributes to copied files.
/A-:[RASHCNET]Remove the given attributes from copied files.
/CREATECreate directory tree and zero-length files only.
/FATCreate destination files using 8.3 FAT file names only.
/256Turn off very long path (> 256 characters) support.
/MON:nMonitor source; run again when more than n changes seen.
/MOT:mMonitor source; run again in m minutes time, if changed.
/RH:hhmm-hhmmRun hours - times when new copies may be started.
/PFCheck run hours on a per file (not per pass) basis.
/IPG:nInter-packet gap (ms), to free bandwidth on slow lines.
/SLCopy symbolic links versus the target.
/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.

File Selection Options

/ACopy only the files with the archive attribute set.
/MCopy only the files with the archive attribute and reset it.
/IA:[RASHCNETO]Include only the 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.
/XCExclude changed files.
/XNExclude newer files.
/XOExclude older files.
/XXExclude extra files and directories.
/XLExclude lonely files and directories.
/ISInclude same files.
/ITInclude tweaked files.
/MAX:nMaximum file size - exclude files bigger than n bytes.
/MIN:nMinimum file size - exclude files smaller than n bytes.
/MAXAGE:nMaximum file age - exclude files older than n days/date.
/MINAGE:nMinimum file age - exclude files newer than n days/date.
/MAXLAD:nMaximum last access date - exclude files unused since n.
/MINLAD:nMinimum last access date - exclude files used since n.
(If n < 1900 then n = n days, else n = YYYYMMDD date).
/XJExclude junction points. (normally included by default).
/FFTAssume FAT file times (2-second granularity).
/DSTCompensate for one-hour DST time differences.
/XJDExclude junction points for directories.
/XJFExclude junction points for files.

Retry Options

/R:nNumber of retries on failed copies: default 1 million.
/W:nWait time between retries: default is 30 seconds.
/REGSave /R:n and /W:n in the registry as default settings.
/TBDWait for sharenames To be defined (retry error 67).

Logging Options

/LList only - don't copy, timestamp or delete any files.
/XReport all extra files, not only those selected.
/VProduce verbose output, showing skipped files.
/TSInclude source file timestamps in the output.
/FPInclude full pathname of files in the output.
/BYTESPrint sizes as bytes.
/NSNo size - don't log file sizes.
/NCNo class - don't log file classes.
/NFLNo file list - don't log file names.
/NDLNo directory List - don't log directory names.
/NPNo progress - don't display percentage copied.
/ETAShow estimated time of arrival of copied files.
/LOG:fileOutput status to LOG file (overwrite existing log).
/LOG+:fileOutput status to LOG file (append to existing log).
/UNILOG:fileOutput status to LOG file as UNICODE (overwrite existing log).
/UNILOG+:fileOutput status to LOG file as UNICODE (append to existing log).
/TEEOutput to console window and the log file.
/NJHNo job header.
/NJSNo job summary.
/UNICODEOutput status as UNICODE.
Robocopy download

Job Options

/JOB:jobnameTake parameters from the named job file.
/SAVE:jobnameSave parameters to the named job file.
/QUITQuit after processing command line (to view parameters).
/NOSDNo source directory is specified.
/NODDNo destination directory is specified.
/IFInclude the following files.
Gui

Robocopy examples

In this first example, any .txt file would be copied from the hope directory into the hope2 directory. Whenever you want to copy one or more files and not a complete directory the file must be specified after the destination directory.

In the above example, the robocopy command would copy all files (not directories) in the hope directory to the hope2 directory.

In the above example, all files and folders (including empty ones) are copied from the hope directory to the hope2 directory.

This example mirrors what's in c:hope into c:hope2 and purge any files in the hope2 directory that don't exist in the hope directory. Use the /mir switch cautiously since it is deleting files that do not match in the destination directory.

Next, this example would copy any of the files in the hope directory on the network computer named computer to the current computer hope2 directory.

Additional information

RobocopyRobocopy vs xcopy
  • See our copy definition for further information and related links on this term.
-->

Copies file data from one location to another.

Syntax

For example, to copy a file named yearly-report.mov from c:reports to a file share marketingvideos while enabling multi-threading for higher performance (with the /mt parameter) and the ability to restart the transfer in case it's interrupted (with the /z parameter), type:

Parameters

ParameterDescription
<source>Specifies the path to the source directory.
<destination>Specifies the path to the destination directory.
<file>Specifies the file or files to be copied. Wildcard characters (* or ?) are supported. If you don't specify this parameter, *.* is used as the default value.
<options>Specifies the options to use with the robocopy command, including copy, file, retry, logging, and job options.

Copy options

OptionDescription
/sCopies subdirectories. This option automatically excludes empty directories.
/eCopies subdirectories. This option automatically includes empty directories.
/lev:<n>Copies only the top n levels of the source directory tree.
/zCopies files in restartable mode. In restartable mode, should a file copy be interrupted, Robocopy can pick up where it left off rather than re-copying the entire file.
/bCopies files in backup mode. Backup mode allows Robocopy to override file and folder permission settings (ACLs). This allows you to copy files you might otherwise not have access to, assuming it's being run under an account with sufficient privileges.
/zbCopies files in restartable mode. If file access is denied, switches to backup mode.
/jCopies using unbuffered I/O (recommended for large files).
/efsrawCopies all encrypted files in EFS RAW mode.
/copy:<copyflags>Specifies which file properties to copy. The valid values for this option are:
  • D - Data
  • A - Attributes
  • T - Time stamps
  • S - NTFS access control list (ACL)
  • O - Owner information
  • U - Auditing information
The default value for this option is DAT (data, attributes, and time stamps).
/dcopy:<copyflags>Specifies what to copy in directories. The valid values for this option are:
  • D - Data
  • A - Attributes
  • T - Time stamps
The default value for this option is DA (data and attributes).
/secCopies files with security (equivalent to /copy:DATS).
/copyallCopies all file information (equivalent to /copy:DATSOU).
/nocopyCopies no file information (useful with /purge).
/secfixFixes file security on all files, even skipped ones.
/timfixFixes file times on all files, even skipped ones.
/purgeDeletes destination files and directories that no longer exist in the source. Using this option with the /e option and a destination directory, allows the destination directory security settings to not be overwritten.
/mirMirrors a directory tree (equivalent to /e plus /purge). Using this option with the /e option and a destination directory, overwrites the destination directory security settings.
/movMoves files, and deletes them from the source after they are copied.
/moveMoves files and directories, and deletes them from the source after they are copied.
/a+:[RASHCNET]Adds the specified attributes to copied files. The valid values for this option are:
  • R - Read only
  • A - Archive
  • S - System
  • H - Hidden
  • C - Compressed
  • N - Not content indexed
  • E - Encrypted
  • T - Temporary
/a-:[RASHCNET]Removes the specified attributes from copied files. The valid values for this option are:
  • R - Read only
  • A - Archive
  • S - System
  • H - Hidden
  • C - Compressed
  • N - Not content indexed
  • E - Encrypted
  • T - Temporary
/createCreates a directory tree and zero-length files only.
/fatCreates destination files by using 8.3 character-length FAT file names only.
/256Turns off support for paths longer than 256 characters.
/mon:<n>Monitors the source, and runs again when more than n changes are detected.
/mot:<m>Monitors the source, and runs again in m minutes, if changes are detected.
/MT[:n]Creates multi-threaded copies with n threads. n must be an integer between 1 and 128. The default value for n is 8. For better performance, redirect your output using /log option.

The /mt parameter can't be used with the /ipg and /efsraw parameters.

/rh:hhmm-hhmmSpecifies run times when new copies may be started.
/pfChecks run times on a per-file (not per-pass) basis.
/ipg:nSpecifies the inter-packet gap to free bandwidth on slow lines.
/slDon't follow symbolic links and instead create a copy of the link.
/nodcopyCopies no directory info (the default /dcopy:DA is done).
/nooffloadCopies files without using the Windows Copy Offload mechanism.
/compressRequests network compression during file transfer, if applicable.

Important

When using the /secfix copy option, specify the type of security information you want to copy, using one of these additional copy options:

  • /copyall
  • /copy:o
  • /copy:s
  • /copy:u
  • /sec

File selection options

OptionDescription
/aCopies only files for which the Archive attribute is set.
/mCopies only files for which the Archive attribute is set, and resets the Archive attribute.
/ia:[RASHCNETO]Includes only files for which any of the specified attributes are set. The valid values for this option are:
  • R - Read only
  • A - Archive
  • S - System
  • H - Hidden
  • C - Compressed
  • N - Not content indexed
  • E - Encrypted
  • T - Temporary
  • O - Offline
/xa:[RASHCNETO]Excludes files for which any of the specified attributes are set. The valid values for this option are:
  • R - Read only
  • A - Archive
  • S - System
  • H - Hidden
  • C - Compressed
  • N - Not content indexed
  • E - Encrypted
  • T - Temporary
  • O - Offline
/xf <filename>[ ...]Excludes files that match the specified names or paths. Wildcard characters (* and ?) are supported.
/xd <directory>[ ...]Excludes directories that match the specified names and paths.
/xcExcludes changed files.
/xnExcludes newer files.
/xoExcludes older files.
/xxExcludes extra files and directories.
/xlExcludes 'lonely' files and directories.
/imInclude modified files (differing change times).
/isIncludes the same files.
/itIncludes tweaked files.
/xcExcludes existing files with the same timestamp, but different file sizes.
/xnExcludes existing files newer than the copy in the source directory.
/xoExcludes existing files older than the copy in the source directory.
/xxExcludes extra files and directories present in the destination but not the source. Excluding extra files will not delete files from the destination.
/xlExcludes 'lonely' files and directories present in the source but not the destination. Excluding lonely files prevents any new files from being added to the destination.
/isIncludes the same files. Same files are identical in name, size, times, and all attributes.
/itIncludes 'tweaked' files. Tweaked files have the same name, size, and times, but different attributes.
/max:<n>Specifies the maximum file size (to exclude files bigger than n bytes).
/min:<n>Specifies the minimum file size (to exclude files smaller than n bytes).
/maxage:<n>Specifies the maximum file age (to exclude files older than n days or date).
/minage:<n>Specifies the minimum file age (exclude files newer than n days or date).
/maxlad:<n>Specifies the maximum last access date (excludes files unused since n).
/minlad:<n>Specifies the minimum last access date (excludes files used since n) If n is less than 1900, n specifies the number of days. Otherwise, n specifies a date in the format YYYYMMDD.
/xjExcludes junction points, which are normally included by default.
/fftAssumes FAT file times (two-second precision).
/dstCompensates for one-hour DST time differences.
/xjdExcludes junction points for directories.
/xjfExcludes junction points for files.

Retry options

OptionDescription
/r:<n>Specifies the number of retries on failed copies. The default value of n is 1,000,000 (one million retries).
/w:<n>Specifies the wait time between retries, in seconds. The default value of n is 30 (wait time 30 seconds).
/regSaves the values specified in the /r and /w options as default settings in the registry.
/tbdSpecifies that the system will wait for share names to be defined (retry error 67).

Logging options

OptionDescription
/lSpecifies that files are to be listed only (and not copied, deleted, or time stamped).
/xReports all extra files, not just those that are selected.
/vProduces verbose output, and shows all skipped files.
/tsIncludes source file time stamps in the output.
/fpIncludes the full path names of the files in the output.
/bytesPrints sizes, as bytes.
/nsSpecifies that file sizes are not to be logged.
/ncSpecifies that file classes are not to be logged.
/nflSpecifies that file names are not to be logged.
/ndlSpecifies that directory names are not to be logged.
/npSpecifies that the progress of the copying operation (the number of files or directories copied so far) will not be displayed.
/etaShows the estimated time of arrival (ETA) of the copied files.
/log:<logfile>Writes the status output to the log file (overwrites the existing log file).
/log+:<logfile>Writes the status output to the log file (appends the output to the existing log file).
/unicodeDisplays the status output as Unicode text.
/unilog:<logfile>Writes the status output to the log file as Unicode text (overwrites the existing log file).
/unilog+:<logfile>Writes the status output to the log file as Unicode text (appends the output to the existing log file).
/teeWrites the status output to the console window, as well as to the log file.
/njhSpecifies that there is no job header.
/njsSpecifies that there is no job summary.

Job options

Robocopy J Switch

OptionDescription
/job:<jobname>Specifies that parameters are to be derived from the named job file.
/save:<jobname>Specifies that parameters are to be saved to the named job file.
/quitQuits after processing command line (to view parameters).
/nosdIndicates that no source directory is specified.
/noddIndicates that no destination directory is specified.
/ifIncludes the specified files.

Exit (return) codes

Robocopy Switches

ValueDescription
0No files were copied. No failure was encountered. No files were mismatched. The files already exist in the destination directory; therefore, the copy operation was skipped.
1All files were copied successfully.
2There are some additional files in the destination directory that are not present in the source directory. No files were copied.
3Some files were copied. Additional files were present. No failure was encountered.
5Some files were copied. Some files were mismatched. No failure was encountered.
6Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory.
7Files were copied, a file mismatch was present, and additional files were present.
8Several files did not copy.

Note

Any value greater than 8 indicates that there was at least one failure during the copy operation.

Robocopy Download

Additional References