Other names | Robust File Copy for Windows |
---|---|
Developer(s) | Microsoft |
Initial release | 1996, 28–29 years ago |
Stable release | |
Operating system | Windows NT 4 and later |
Included with | Windows Vista and later |
Type | Command |
License | Freeware |
Website | learn |
Robocopy is acommand-linefile transferutility forMicrosoft Windows. Robocopy is functionally more comprehensive thanthe COPY command andXCOPY, but replaces neither. Created by Kevin Allen[2] and first released as part of theWindows NT 4.0Resource Kit, it has been a standard feature of Windows sinceWindows Vista andWindows Server 2008.
Robocopy provides features not found in the built-in WindowsCOPY andXCOPY commands, including the following:
/XJ
switch).SeBackupPrivilege
, normally not available to standard user accounts) to bypass NTFS ACLs that would otherwise impede transfer (requires the/B
switch).[3][4]SinceWindows Server 2019 andWindows 10, Robocopy supportsSMB compression for transferring files across a network. If the/compress
is specified, the destination computer supports SMB compression, and the files being copied are compressible, the operation enjoys significant performance improvements. The SMB compression adds inline whitespace compression to file transfers. Compression is also available with theXCOPY
command andHyper-Vlive migration with SMB.[8][9]
Here are some examples of usage, which is not case-sensitive. If more than one option is specified, they must be separated by spaces.
Directory A
to the destinationDirectory B
(including file data, attributes and timestamps), recursively with empty directories (/E
):Robocopy"C:\Directory A""C:\Directory B" /E
/E
), copy all file information (/COPYALL
, equivalent to/COPY:DATSOU
,D
=Data,A
=Attributes,T
=Timestamps,S
=Security=NTFSACLs,O
=Owner info,U
=Auditing info), do not retry locked files (/R:0
) (the number of retries on failed copies default value is 1 million), preserve original directories' Timestamps (/DCOPY:T
- requires version XP026 or later):Robocopy C:\A C:\B /COPYALL /E /R:0 /DCOPY:T
/MIR
), copy files in resume mode (/Z
) in case network connection is lost:Robocopy C:\A \\backupserver\B /MIR /Z
Robocopy syntax is markedly different from its predecessors (copy andxcopy), in that it accepts only folder names, without trailing backslash, as its source and destination arguments. File names andwildcard characters (such as*
and?
) are not valid as source or destination arguments; files may be selected or excluded using the optional "file" filtering argument (which supports wildcards) along with various other options.[11]
For example, to copy two files from folderc:\bar
toc:\baz
, the following syntax is used:
robocopy c:\bar c:\baz file1.txt file2.db
And to copy all PDF files fromc:\bar
toc:\baz
:
robocopy c:\bar c:\baz *.pdf
The files named are copied only from the folder selected for copying; fully qualified path names are not supported.
CAUTION: A long-standing issue with Robocopy means that if you back up from the root folder of a drive [ e.g.,robocopy d:\ b:\d-backup\ ....
], the destination files will be given attributes including SH. This means that they will be invisible to normal access (including DIR in cmd.exe). To fix this, add/a-:SH
to the robocopy command line - or do an ATTRIB command to remove them afterwards.
Robocopy outputs to the screen, or optionally to a log file, the names of all the directories it encounters, in alphabetical order. Each name is preceded by the number of files in the directory that fulfill the criteria for being copied. If the directory does not yet exist in the target, it is marked "New Dir"; if the directory is empty and the /E option is not used, or it contains no files meeting the criteria, a new directory will not be created.
If the /NFL (no file names in log) option is not used, the files being copied will be listed after the name of the directory they are in.
At the end of the output is a table giving numbers of directories, files, and bytes. For each of these, the table gives the total number found in the source, the numbercopied (including directories marked "New Dir" even if they are not copied), the numberskipped (because they already exist in the target), and the number ofmismatches,FAILED, andextras. "Failed" can mean that there was an I/O error that prevented a file being copied, or that access was denied. There is also a row of time taken (in which the time spent on failed files seems to be in the wrong column).
Robocopy's "inter-packet gap" (IPG) option allows some control over the network bandwidth used in a session. In theory, the following formula expresses the delay (D, in milliseconds) required to simulate a desired bandwidth (BD, inkilobits per second), over a network link with an available bandwidth ofBA kbps:
In practice however, some experimentation is usually required to find a suitable delay, due to factors such as the nature and volume of other traffic on the network. The methodology employed by the IPG option may not offer the same level of control provided by some other bandwidth throttling technologies, such asBITS (which is used byWindows Update and BranchCache).
FILE_SHARE_READ
[12] flag during opening. NormallyVolume Shadow Copy Service is used for such situations, but Robocopy does not use it. Consequently, Robocopy is not suitable for backing up live operating system volumes. However, a separate utility such as ShadowSpawn[13] (under MIT License) or DiskShadow[14] (included withWindows Server 2008), can be used beforehand to create a shadow copy of a given volume, which Robocopy can then back up./MT[:n]
option to enable multithreaded copying, the/NP
option to disable reporting of the progress percentage for files is ignored. By default the MT switch provides 8 threads. The n is the number of threads you specify if you do not want to use the default.[17]Although Robocopy itself is a command-line tool,Microsoft TechNet provided aGUI front-end called Robocopy GUI. It was developed by Derk Benisch, a systems engineer with theMSN Search group at Microsoft, and required.NET Framework 2.0.[18] It included a copy of Robocopy version XP026. It is no longer available from Microsoft, but may be downloaded from theInternet Archive'sWayback Machine.[19]
There are non-Microsoft GUIs for Robocopy:
Ken Tamaru of Microsoft developed a copying program with functionality similar to Robocopy, calledRichCopy, this was discontinued in 2010. It is not based on Robocopy, and does not require .NET Framework.[26]
All versions of Robocopy store their version number and release date in their executable file header, viewable withFile Explorer orPowerShell. Some of them (not all) report their version numbers in their textual output.
Product version | File version | Year | Bundled with |
---|---|---|---|
1.54 | — | 1996 | Windows NT 4.0Resource Kit |
1.70 | — | 1997 | Windows NT Resource Kit |
1.71 | 4.0.1.71 | 1997 | Windows NT Resource Kit |
1.95 | 4.0.1.95 | 1999 | Windows 2000 Resource Kit |
1.96 | 4.0.1.96 | 1999 | Windows 2000 Resource Kit |
XP010 | 5.1.1.1010 | 2003 | Windows 2003 Resource Kit |
XP026 | 5.1.2600.26 | 2005 | Robocopy GUI v.3.1.2 |
XP027 | 5.1.10.1027 | 2008 | Windows Vista,Server 2008,7,2008 R2 |
6.1 | 6.1.7601 | 2009 | KB2639043 |
Same as Windows | Windows 8 and later,Windows Server 2012 and later |
Backup mode copies [...] enable you to copy some files as a Backup Operator that you would not be able to copy as a normal user.
Backup Operators [...] Members of this group can back up and restore all files [...], regardless of their own individual permissions on those files.
FILE_SHARE_READ [...] Enables subsequent open operations on a file or device to request read access. Otherwise, other processes cannot open the file or device if they request read access.
ShadowSpawn.exe is an open source MIT licensed tool that creates and manages shadow copies.
DiskShadow.exe is a tool that exposes the functionality offered by the Volume Shadow Copy Service (VSS).