Robust File and Folder Copy.
By default Robocopy will only copy a file if the source and destination have different time stamps or different file sizes.
By default Robocopy will only copy a file if the source and destination have different time stamps or different file sizes.
Mar 20, 2015 Powershell: To compare two folders I perform the following steps: Use the Get-ChildItem cmdlet with the recurse switched parameter and the path parameter (points to the folder to use for reference) to obtain a collection of fileinfo objects. Store these objects in a variable. Use the Get-ChildItem cmdlet with the recurse switched parameter and the path parameter (points to the folder to use. Robocopy - Invalid parameter This is similar to the spaces-in-file-names problem previously reported with robocopy. I use robocopy to back up data from our private e-mail app to a DVD+RW, except that in the directory of one of the other users is a bunch of JPEG files, some with spaces in their names, that he (apparently) put there to make it.
## = New Option in Windows 8 and Windows 10
Robocopy EXIT CODES
Displays files that are going to be copied. /h: Copies hidden and system files. /r: Overwrites read-only files. /t: Creates a folder structure, but does not copy files. Does not include empty folders or subfolders. Use the /t with the /e switch to include empty folders and subfolders. /u: Updates the files that already exist in that destination. /XA:H makes Robocopy ignore hidden files, usually these will be system files that we're not interested in. /W:5 reduces the wait time between failures to 5 seconds instead of the 30 second default. #7 Copy all changes. Use Robocopy to copy all changes to files in a directory called c:data to a directory that contains the date, like data20091124.
By copying only the files that have changed, robocopy can be used to backup very large volumes.
If either the source or desination are a 'quoted long foldername' do not include a trailing backslash as this will be treated as an escape character, i.e. 'C:some path' will fail but 'C:some path' or 'C:some path.' or 'C:some path' will work.
If creating a progress logfile with /LOG , specify a destination directory that already exists, robocopy will create the file but will not create a log directory automatically.
Long FileNames
ROBOCOPY will accept UNC pathnames including long pathnames over 256 characters long. When copying a tree of multiple files and subfolders, if the destination folder has a longer name than the source folder, then it is likely some files will hit the 256 character limit.
Even when Robocopy successfully copies such files, other software may refuse to open them.
Even when Robocopy successfully copies such files, other software may refuse to open them.
For compatibility with old software the User Profile folder contains a number of Junction Points, 'Application Data', 'My Documents', Recent, 'Send To' etc.
By default RoboCopy /S will follow a junction point in the source and copy the contents to a standard folder in the destination.
By default RoboCopy /S will follow a junction point in the source and copy the contents to a standard folder in the destination.
In the case of 'Application Data' on Windows 7 Documents and Settings%USER%Application Data is a junction point to Users%USER%AppDataRoaming, which in turn can contain the Application Data junction as a subdirectory.
In cases like this RoboCopy can create a recursive loop copying the folder into itself until the NTFS max folder name length of 32,767 characters is exceded. To avoid this use the /XJ or /XJD option.
Symbolic Links and Junctions
/sl Will copy symbolic links, this will copy a File Symbolic Link only, creating a new symbolic link at the destination.
For a Directory Symbolic Link, a Junction, or a Hard Link, RoboCopy will follow the source and copy the contents to a standard folder in the destination. For a backup program this is usually the desired behaviour.
To exclude Junction points from being copied you can use the options /XJ, /XJD, /XJF this will prevent the source files from being copied. The Junction Point itself will not be copied (either with or without these flags). Garth brooks discography download.
An NTFS junction point in the Destination will not be deleted by RoboCopy, if you select any options which delete from the destination (/purge, /mir) and the destination contains a junction, RoboCopy will blindly follow that junction and delete the contents.
The /XJ options do not affect this as they only exclude junctions from the source.
The /XJ options do not affect this as they only exclude junctions from the source.
File Attributes [RASHCNETO]
These options accept any combination of the following letters, when several are specified, will match if any or all items match:
Multithreaded copying with /MT:n will improve performance until the network and file system latency become the limiting factor, /MT:4 is a good place to start testing.
To limit the network bandwidth used by robocopy, specify the Inter-Packet Gap parameter /IPG:n
This will send packets of 64 KB each followed by a delay of n Milliseconds.
This will send packets of 64 KB each followed by a delay of n Milliseconds.
Robocopy will fail to copy files that are locked by other users or applications, so limiting the number of retries with /R:0 will speed up copying by skipping any in-use files. The Windows Volume Shadow Copy service is the only Windows subsystem that can copy open files. Robocopy does not use the Volume Shadow Copy service, but it can backup a volume shadow that has already been created with VSHADOW or DISKSHADOW.
All versions of Robocopy will copy security information (ACLs) for directories, version XP010 will not copy file security changes unless the file itself has also changed, this greatly improves performance.
/REG Writes to the registry at HKCUSoftwareMicrosoftResKitRobocopy
/XX (exclude extra) If used in conjunction with /Purge or /Mir, the exclude extra switch will take precedence and prevent any files being deleted from the destination.
/B (backup mode) will allow Robocopy to override file and folder permission settings (ACLs).
To run ROBOCOPY under a non-administrator account will require SeBackupPrivilege (backup files privilege), to copy security information auditing privilege is also required, plus of course you need at least read access to the files and folders.
ERROR 5 (0x00000005) Changing File Attributes .. Access is denied
This error usually means that File/Folder permissions or Share permissions on either the source or the destination are preventing the copy, either change the permissions or run the command in backup mode with /B.
This error usually means that File/Folder permissions or Share permissions on either the source or the destination are preventing the copy, either change the permissions or run the command in backup mode with /B.
Robocopy 'Jobs' and the 'MOnitor source' option provide an alternative to setting up a Scheduled Task to run a batchfile with a Robocopy command.
Examples:
Simple copy of all files from one folder to another:
Copy all .jpg and .bmp files from one folder to another:
Copy files including subfolders (even empty ones /E)
If this command is run repeatedly it will skip any files already in the destination, however it is not a true mirror as any files deleted from the source will remain in the destination.
If this command is run repeatedly it will skip any files already in the destination, however it is not a true mirror as any files deleted from the source will remain in the destination.
List files over 32 MBytes in size:
Move files over 14 days old: (note the MOVE option will fail if any files are open and locked.)
Backup a Server:
The script below copies data from FileServ1 to FileServ2, the destination holds a full mirror along with file security info. When run regularly to synchronize the source and destination, robocopy will only copy those files that have changed (change in time stamp or size.)
The script below copies data from FileServ1 to FileServ2, the destination holds a full mirror along with file security info. When run regularly to synchronize the source and destination, robocopy will only copy those files that have changed (change in time stamp or size.)
@ECHO OFF
SETLOCAL
SETLOCAL
SET _source=FileServ1e$users
SET _dest=FileServ2e$BackupUsers
SET _what=/COPYALL /B /MIR
:: /COPYALL :: COPY ALL file info
:: /B :: copy files in Backup mode.
:: /MIR :: MIRror a directory tree
SET _options=/R:0 /W:0 /LOG:C:batchRoboLog.txt /NFL /NDL
:: /R:n :: number of Retries
:: /W:n :: Wait time between retries
:: /LOG :: Output log file
:: /NFL :: No file logging
:: /NDL :: No dir logging
ROBOCOPY %_source% %_dest% %_what% %_options%
:: /COPYALL :: COPY ALL file info
:: /B :: copy files in Backup mode.
:: /MIR :: MIRror a directory tree
SET _options=/R:0 /W:0 /LOG:C:batchRoboLog.txt /NFL /NDL
:: /R:n :: number of Retries
:: /W:n :: Wait time between retries
:: /LOG :: Output log file
:: /NFL :: No file logging
:: /NDL :: No dir logging
ROBOCOPY %_source% %_dest% %_what% %_options%
Run two robocopy jobs at the same time with START /Min
Copy only permission changes (additions and removals) assuming we already have a copy of the data:
ROBOCOPY FileServerC$ SVR-Backupsc$Backups /E /Copy:S /IS /IT
ROBOCOPY FileServerC$ SVR-Backupsc$Backups /E /Copy:S /IS /IT
Availability
Robocopy XP027 is a standard command in Windows 7 and above. Robocopy does not run on Windows 95, or NT 3.5. (Robocopy is a Unicode application). The Microsoft Robocopy GUI will install Robocopy XP026 to C:Windowssystem32, this version can can run on older OS's, and includes some features from XP027 (/BYTES) but has competely broken errorlevel handling.
Bugs
Robocopy /MOVE or /PURGE can be used to delete empty folders by setting source and destination to the same folder, but this does not always deal with nested empty folders in a single pass. It will work if Windows Explorer is closed.
When copying files larger than 2 GB from some iSCSI/SAN volumes the copy operation may fill all available RAM and then stall out. This typically happens when the RAID virtual disk on the controller is set to write-through caching rather than write-back caching.
Copy utilities such as TeraCopy ($), ESEUTIL (exchange) and BITS will workaround this issue because they copy the file in blocks, however the cost of this is that copying smaller files may then be slower than using Robocopy. The /IPG option may help with this issue.
Copy utilities such as TeraCopy ($), ESEUTIL (exchange) and BITS will workaround this issue because they copy the file in blocks, however the cost of this is that copying smaller files may then be slower than using Robocopy. The /IPG option may help with this issue.
Version XP026 returns a success errorlevel even when it fails.
“One, a robot may not injure a human being, or through inaction, allow a human being to come to harm” - Isaac Asimov, Laws of Robotics from I. Robot, 1950
Related:
Robocopy EXIT CODES
Robocopy /MIR switch – Security changes added to Robocopy in Windows Vista.
Set-LastWrite - Reset Folder 'Last Modified' to the most recent file in the folder (PowerShell function).
DiskShadow - Copy open files (Shadow copies).
COPY - Copy one or more files to another location.
Robocopy GUI - Technet magazine (installs Robocopy XP026)
RichCopy free GUI copy utility - Ken Tamaru [MSFT]
DelTree - Delete subfolders and files / delete empty folders.
Convert KB/MB - Bits and Bytes, bandwidth calculations .
Q323275 - Copy Security info without copying files (/SECFIX or /COPY:S).
Equivalent PowerShell command: BITS cmdlets - Background Intelligent Transfer Service.
Equivalent bash command: rsync - Remote file copy (Synchronize file trees).
Robocopy EXIT CODES
Robocopy /MIR switch – Security changes added to Robocopy in Windows Vista.
Set-LastWrite - Reset Folder 'Last Modified' to the most recent file in the folder (PowerShell function).
DiskShadow - Copy open files (Shadow copies).
COPY - Copy one or more files to another location.
Robocopy GUI - Technet magazine (installs Robocopy XP026)
RichCopy free GUI copy utility - Ken Tamaru [MSFT]
DelTree - Delete subfolders and files / delete empty folders.
Convert KB/MB - Bits and Bytes, bandwidth calculations .
Q323275 - Copy Security info without copying files (/SECFIX or /COPY:S).
Equivalent PowerShell command: BITS cmdlets - Background Intelligent Transfer Service.
Equivalent bash command: rsync - Remote file copy (Synchronize file trees).
Copyright © 1999-2020 SS64.com
Some rights reserved
Some rights reserved
Robocopy or Robust File and Folder Copy application is very popular amongst Windows system administrators. Robocopy will copy the local or given file to the remote or destination location.
robocopy Features
The command robocopy provides very useful features for files copying over network. Below we will list some of them.
Resume Interrupted Copy
when the network or remote host is down during a copy the copy operation can resume where it left.Preserve File Attributes and timestamp
of the copied file where owner and audit information is also preserved.Ability To Update Copied File Attributes and Timestamps
of the copied files and folders which will set to the latest date and time.Administrator Owned File Copy
is supported with the option /B
.Mirror Mode
is provided to sync or mirror given files and folder or directory updated files will be updated and deleted files will be deleted on the target.Skip Allready Existing Files
by checking size and timestamp information and comparing it to the source and target.Progress Bar
will shown current copy operation graphically.Multi-threaded copying
which will allow copy, mirror multiple files and directories at the same time which will decrease the complete copy operation time.robocopy Command Syntax
The general syntax of
robocopy
command is like below.- SOURCE is the source file or directory we want to copy
- DESTINATION is the destination file or directory we want to copy
- OPTIONS are different features or behaviors we want to use like recursive, verbose, extension filter, etc.
Copy Specified Folder
The most basic operation with
robocopy
is copying sources folders to the destination. In this example, we will copy the directory named mytest
to the destination folder yourtest
After copy operation, some statistics are provided by
robocopy
Start
shows start time of copy operationSource
shows source directoryDest
shows destination directoryFiles
shows file filterOptions
shows given optionsTotal
shows total files and folders countCopied
shows copied files and folders countSkipped
shows not copied files and folders
Copy From Local System To Remote System
We can also copy a file and folders to the remote system. We will provide a remote system hostname or IP address before the destination path. We can use BACKUPSERVER or 10.5.2.30 to specify the remote system.
In this example, we will copy the source directory named
mytest
to the remote system with IP address 192.168.122.46
under the path Usersismail
with the named yourtest
.Copy Only Given File Types or Extensions
robocopy
provides some filtering features while copying files. We can specify the filenames and extensions we want to copy. This will skip other file names and extensions. We will provide the file name or extension after the destination folder.In this example, we only want to copy
*.txt
extension files.We can see from the output that only one file is copied but there was more than one file. Copied file name and byte count is also printed.
Copy SubFolders
By default, only first level directories are copied to the destination. If we need to copy all level and subdirectories folders we should enable
/S
.List Files
There is a very useful feature for robocopy where source files are not copied and just listed. This feature can be useful if we want to check existing files and folders. We can use
/L
option to print the list of files and directories.As we can see from the output that all files and folders are skipped and not copied.
List Files Recursively
While robocopy is mainly used to copy files from remote to local or local to remove we can use
/L
and /S
options in order to list remote files. We can merge two options list and recursive to list all level files and folders.Copy Files Lower Than Given Size
While copying files we can specify the size of files we want to copy. In this example we will copy files those sizes are lower than
1K
. We will use the /MAX
option for this.As we can see from the results some of the files are copied but some of them are not copied because of the size restriction.
Copy Files Higher Than Given Size
The reverse of the previous option is
/MIN
option . This will only copy files higher than the given size. In this example, we will copy files higher than 1K which is 1000 kilobytes.Move Files
The default behavior of
robocopy
is copying files. Sometimes we may need to move files. This can be done with robocopy
too. We will provide /MOV
option in order to move files and folders.Logging Operations
While doing copy and move operations we can also need some logs, especially in bulk data operations. We can write a log about specified operations with
/LOG
option. We can also specify the log file name y adding at the end of /LOG
option. In this example, we will write robocopy
operation log to log file named backup.log
. This will prevent regular outputThe log file can be listed with
type
command in MS-DOS command line like below.Copy Given File Properties
Files and folders may have different properties. These properties can be used for different purposes like the listing owner, audit information, timestamps, etc. We can copy these attributes too with the robocopy command. Here are the attributes we can specify for the copy. We will also use
/copy:
option by adding the property we want to copy.D
is used to copy data propertiesA
used for attributesT
for time stampsS
is used for NTFS access control list simply ACLO
is used for the owner informationU
is used for Auditing information
In this example, we will copy time stamp attributes or properties with the following command.
Copy All Attributes with /copyall
We can also copy files with all properties of attributes with the
/copyall
parameter like below. This is equal to the /copy:DATSOU
.Copy Locked Files With Robocopy Using B Parameters
Delete or Remove Destination Files and Directories That No Longer Exist In The Source
How To Copy Locked Files With Robocopy
If we are trying to make an identical copy of the local files and directories to the remote we need to purge or remove remote files and directories that no longer exist in the source. We can use
/purge
option for this.