Robocopy
Robocopy, or “Robust File Copy”, is a command-line directory replication command. It has been available as part of the Windows Resource Kit starting with Windows NT 4.0, and was introduced as a standard feature of Windows Vista, Windows 7 and Windows Server 2008. The command is robocopy.
Robocopy is notable for capabilities above and beyond the built-in Windows copy and xcopy commands, including the following:
- Ability to tolerate network interruptions and resume copying. (incomplete files are marked with a date stamp of 1980-01-01 and contain a recovery record so Robocopy knows where to continue from)
- Ability to skip Junction Points which can cause to fail copying in an infinite loop (/XJ)
- Ability to copy file data and attributes correctly, and to preserve original timestamps, as well as NTFS ACLs, owner information, and audit information using command line switches. /COPYALL or /COPY. Copying folder timestamps is also possible in later versions – /DCOPY:T
- Ability 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 skip files that already appear in the destination folder with identical size and timestamp.
- A continuously-updated command-line progress indicator.
- Ability to copy file and folder names exceeding 256 characters — up to a theoretical limit of 32,000 characters — without errors.
- Multi-threaded copying. (Windows 7 only)
- Return code on program termination for batch file usage.
Example Process
- Decide what is your source folder
- Decide which is your destination folder
- The Syntax is then as follows
ROBOCOPY Source_folder Destination_folder [files_to_copy] [options]
Robocopy 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)
- /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)
- /Z : Copy files in restartable mode (survive network glitch)
- /B : Copy files in Backup mode
- /ZB : Use restartable mode; if access denied use Backup mode
- /IPG:n : Inter-Packet Gap (ms), to free bandwidth on slow lines
- /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
- /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 may 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