Jump to content

Robocopy: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 240: Line 240:
* [[rsync]]
* [[rsync]]
* [[SyncToy]]
* [[SyncToy]]

s


==References==
==References==

Revision as of 04:47, 27 February 2010

robocopy
Developer(s)Microsoft
Stable release
XP028
Operating systemWindows NT, Windows 2000, Windows XP, Windows 2003, Windows Vista (32 or 64-bit), Windows 7, Windows Server 2008
LicenseProprietary

Robocopy, or "Robust File Copy", is a command-line directory replication command. It was available as part of the Windows Resource Kit, and introduced as a standard feature of Windows Vista, Windows 7 and Windows Server 2008.

Robocopy is designed for reliable mirroring of directories or directory trees. It has features to ensure all NTFS attributes and properties are copied, and includes additional restart code for network connections subject to disruption.

Features

Robocopy is notable for capabilities above and beyond the built-in Windows copy and xcopy commands, including the following:

  • Ability to tolerate network outages and resume copying where it previously left off (incomplete files are noted with a date stamp corresponding to 1980-01-01 and contain a recovery record so Robocopy knows from where to continue).
  • Ability to correctly copy attributes, owner information, alternate data streams, auditing information, and timestamps by default, without the need for numerous often forgotten command line switches.
  • Ability to correctly copy NTFS ACLs, (when /COPYALL provided), and to assert the Windows NT "backup right" (/B) so an administrator may copy an entire directory, including files denied readability to the administrator.
  • Persistence by default, with a programmable number of automatic retries if a file cannot be opened.
  • A "mirror" mode, which keeps trees in sync by optionally deleting files out of the destination that are no longer present in the source.
  • Ability to copy large numbers of files that would otherwise crash the built-in XCOPY utility.
  • A progress indicator on the command line that updates continuously.
  • Ability to copy long file and folder names exceeding 256 characters — up to a theoretical 32,000 characters — without errors.[1]
  • Supports multithreaded copying (Windows 7 only).[2]

Notably, Robocopy cannot copy open files that are in use by other users or applications. The so-called Backup mode is an administrative privilege that allows Robocopy to override permissions settings (specifically, NTFS ACLs) for the purpose of making backups. The Windows Volume Shadow Copy service is the only Windows subsystem that can copy open files while they are in use. Robocopy does not implement accessing the Volume Shadow Copy service in any way, inhibiting its usefulness as a backup utility for volumes that may be in use. However, one can use separate utilities such as VSHADOW or DISKSHADOW (included with Windows Server 2008) to create a shadow copy of a given volume with which to backup using Robocopy.

On the other hand, by design, the original Robocopy version is not able to replicate security attributes of files which have had their security permissions changed after an initial mirroring. [3] This behavior was changed on Robocopy versions included in Windows 2008 and Windows Vista. The downside of this approach is that it means Robocopy does not behave consistently between different platforms. [4]

Common usage examples

Copy directory contents recursively, all contents of foo to bar:

 robocopy C:\foo C:\bar /E

Copy directory recursively (/E), and copy all file information (/COPYALL, equivalent to /COPY:DATSOU, D=Data, A=Attributes, T=Timestamps, S=Security=NTFS ACLs, O=Owner info, U=aUditing info), do not retry locked files (/R:0). Note directory Timestamps will not be reset if using a Robocopy version older than XP026:

 robocopy C:\foo C:\bar /COPYALL /E /R:0

Mirror foo to bar, destroying any files in bar that are not present in foo (/MIR), copy files in restartable mode (/Z) in case network connection is lost:

 robocopy C:\foo \\backupserver\bar /MIR /Z

Folder copier, not file copier

The syntax of Robocopy is markedly different from that of standard copy commands, in that it only accepts the names of folders, not files, as its source and destination arguments. Names of files and wild-card designations (such as "*.*") are not acceptable as source or destination. Files may be selected or excluded using the optional filespec filtering argument. Filespecs can only refer to the filenames relative to the folders already selected for copying, and fully-qualified path names are not accepted.

For example, in order to copy the file foo.txt from directory c:\bar to c:\baz, one could use the following syntax:

 robocopy c:\bar c:\baz foo.txt

Bandwidth throttling

Robocopy's "inter-packet gap" (IPG) option allows some control over the network bandwidth utilised in a single session. In theory, the following formula expresses the delay (D, in milliseconds) required to simulate a desired bandwidth (BD, in kilobits per second), over a network link with an available bandwidth of BA kbps:

  

In practice however, usually some experimentation is required to find a suitable delay, due to external 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 as BITS (which is utilised by Windows Update and BranchCache).


Partial list of command line switches

The following is a list of the more common command line options for Robocopy: [5]


  ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010

 Started : Thu Feb 11 09:14:57 2010
             Usage :: ROBOCOPY source destination [file [file]...] [options]
            source :: Source Directory (drive:\path or \\server\share\path).
       destination :: Destination Dir  (drive:\path or \\server\share\path).
              file :: File(s) to copy  (names/wildcards: default is "*.*").
Copy options :
                /S :: copy Subdirectories, but not empty ones.
                /E :: copy subdirectories, including Empty ones.
            /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.
 /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).
              /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).
            /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+:[RASHNT] :: add the given Attributes to copied files.
      /A-:[RASHNT] :: 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.
              /FFT :: assume FAT File Times (2-second granularity).
              /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.
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).
               /XJ :: eXclude Junction points. (normally included by default).
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 as default settings.
              /TBD :: wait for sharenames To Be Defined (retry error 67).
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.
               /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 % 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).
              /TEE :: output to console window, as well as the log file.
              /NJH :: No Job Header.
              /NJS :: No Job Summary.
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.


GUI front-end

Although Robocopy itself is a command-line tool, Microsoft Technet has also provided a GUI front-end, the GUI requires the .NET Framework 2.0. It has been developed by Derk Benisch, a systems engineer with the MSN Search group at Microsoft.[6] Robocopy GUI also includes version XP026 of Robocopy (Vista version). When downloaded from the TechNet link below, the version reported is "Microsoft Robocopy GUI 3.1.2."

Subsequently, a tool called RichCopy was made available on Technet. While it is not based on Robocopy anymore, it offers many similar features. [7]

Known flaws

  • XP026 version does not give return codes for ERRORLEVEL use when extra dir/file exist
  • A new option in Vista (XP027) /EFSRAW : Copy any encrypted files using EFS RAW mode; is not available for XP (XP026).
  • Robocopy will not copy folder timestamps from the source folder. Instead, it will use the current date and time when creating new folders. To match the timestamps to the original, another file utility must be used. This flaw has been addressed in version XP026 and the Windows Vista version of Robocopy (switch /DCOPY:T).
  • Copying files in restartable mode is much slower (about 6x over a network) than in normal or backup mode due to the necessary management overhead.
  • Although version XP026 can now copy compressed files this causes heavy fragmentation.
  • Backup mode cannot circumvent explicit NTFS deny ACL's if the copier isn't the objects' owner. (Error message: ERROR 5 (0x00000005) Copying NTFS Security to Destination Directory. Access denied.)You can overcome this error by just copying the data in the files with these Options setting: /COPY:DT instead of the /COPYALL option
  • Robocopy does not preserve Hardlinks
  • Robocopy cannot copy files over FTP links
  • Robocopy is known to sometimes hang when copying data across a network, leaving the computer unable to shut down and the internet inaccessible [8]


Versions

File version Year Origin Other
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 (c) 1995-1997(!)
XP010 5.1.1.1010 2003 Windows 2003 Resource Kit
XP026 5.1.2600.26 2005 Downloaded with Robocopy GUI v.3.1.2
XP027 5.1.10.1027 2008 Bundled with Windows Vista and Windows 7 (c) 1995-2004(!)
XP028 5.? ???? Bundled with Windows Vista SP1

See also

s

References

  1. ^ http://windowsitpro.com/Windows/Articles/ArticleID/44324/pg/2/2.html Robocopy XP010 FAQ Wield powerful new switch options.
  2. ^ http://technet.microsoft.com/en-us/magazine/dd542631.aspx
  3. ^ Microsoft's Robocopy compromise.
  4. ^ Ugly bug in Robocopy - ignoring security on file level.
  5. ^ Robocopy.exe, Microsoft Windows Server 2003 Resource Kit, help output when run with /? command line switch. Complete help with /??? command line switch.
  6. ^ Joshua Hoffman (November, 2006). "Utility Spotlight Robocopy GUI" (html). TechNet Magazine. Microsoft Corporation and CMP Media, LLC. Retrieved 2008-07-17. {{cite news}}: Check date values in: |date= (help); Cite has empty unknown parameter: |coauthors= (help)
  7. ^ "Free Utility: RichCopy, an Advanced Alternative to RoboCopy". TechNet Magazine. Microsoft Corporation and CMP Media, LLC. November, 2006. Retrieved 2008-07-17. {{cite news}}: Check date values in: |date= (help); Cite has empty unknown parameter: |coauthors= (help)
  8. ^ http://social.technet.microsoft.com/Forums/en-US/itprovistasp/thread/5f7ee494-0c78-4ce4-8385-1f6099ab4e75