ROBOCOPY - Create Backup Script

How to Create a Backup Script using ROBOCOPY Command


   Information
There are many paid and free software solutions available to backup critical data and files on a computer system. Many users, however, are unaware of an inbuilt Windows 7 command called ROBOCOPY (Robust File Copy) that allows users to create simple or highly advanced backup strategies.


In its simplist form, ROBOCOPY can be likened to an extension of XCOPY on steroids. Some of the more important features that make ROBOCOPY an attractive backup alternative are:
  • multi-threaded copying
  • mirroring or synchronisation mode between the destination and source
  • automatic retry and copy resumption
The examples shown below are primarily geared towards less experienced users, especially those that are unfamilar with batch file creation and running. More experienced users, however, are welcome to explore some of the advanced functionality offered by ROBOCOPY here:

http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx

and also here:

http://www.theether.net/download/Microsoft/Utilities/robocopy.pdf

or by simply typing robocopy /? at a cmd window prompt.


   Note
ROBOCOPY is a FOLDER copier, not a FILE copier - the source and destination syntax arguments in ROBOCOPY can only be folder names.


:note: Creating a BACKUP strategy

The easiest way to use the ROBOCOPY command to create a backup strategy is by creating a batch (.BAT) file. A batch file is a simple text file, that when executed, runs several commands one after the other.

Step 1

Click :orb: and in the search box, type notepad. Select Notepad to open up a new blank Notepad document.


Step 2

Type the ROBOCOPY commands into the Notepad document, save it as a .BAT file, and then execute it.

In the example below, I have 3 folders (Data1, Data2, and Data3) containing some data that I wish to backup. One folder is located on E: drive and the other two are located on F: drive. I wish to back these up as follows:

Data1 folder on E: backup to a folder called Backups on G: (external USB drive)
Data2 folder on F: backup to a folder called Backups on G: (external USB drive)
Data3 folder on F: backup to a folder called Backups on Q: (network storage drive)

The general format of the ROBOCOPY command is:

Code:
robocopy <source> <destination> <options>
In the empty Notepad document, the simplist form of the command would look like this:

Code:
robocopy E:\Data1 G:\Backups\Data1
robocopy F:\Data2 G:\Backups\Data2
robocopy F:\Data3 Q:\Backups\Data3
pause
   Tip
If source or destination paths contain spaces in them, enclose these in double quotes e.g. "C:\My Data\My Music"



Only the source
  • E:\Data1
  • F:\Data2
  • F:\Data3
and the destination
  • G:\Backups\Data1
  • G:\Backups\Data2
  • Q:\Backups\Data3
are mandatory inputs into the ROBOCOPY command.

   Tip
The PAUSE command at the bottom of the .BAT file allows the cmd window to stay open after it has completed to allow me to see the output from ROBOCOPY.


If I save the .BAT file to my Desktop, and run it by double-clicking it, then a cmd window is opened and the .BAT file executes the three ROBOCOPY commands as shown below.

R1.JPG

The same information is repeated for every ROBOCOPY line in the .BAT file.




In order to utilise some of the powerful functionality in ROBOCOPY, I need to utilise some options in the ROBOCOPY command line. In this next example I want to edit my existing backup strategy such that:
  1. All sub-folders within my data folders are backed up, even if they are empty.
  2. The backup only copies newer files to my existing backup - this means a faster backup time.
  3. The percentage progress counter for copying is not shown - this neatens the overall appearance of the ROBOCOPY information, and creates a smaller log file.
  4. The information normally echoed to the cmd window is saved to a log file that I can examine at a later stage.
In order to do this, I need to specify some additional options in my ROBOCOPY commands like this:

Code:
robocopy E:\Data1 G:\Backups\Data1 [B][COLOR=red]/e /mir /np /log:backup_log.txt[/COLOR][/B]
robocopy F:\Data2 G:\Backups\Data2 [B][COLOR=red]/e /mir /np /log+:backup_log.txt[/COLOR][/B]
robocopy F:\Data3 Q:\Backups\Data3 [B][COLOR=red]/e /mir /np /log+:backup_log.txt[/COLOR][/B]
pause
Where:
/e = copy all sub-folders, even empty ones
/mir = mirror (check the files in the destination, and only copy newer files)
/np = no progress counter
/log: = create a logfile

   Tip

Note the use of the /log+: option in the 2nd and 3rd line of the .BAT file. This option ensures that the results of the 2nd and 3rd ROBOCOPY are appended to the log file created in the 1st ROBOCOPY line, meaning I only need one log file to capture all the information I backup.

The log file is always saved to the same folder as the .BAT file - in my case, the folder is saved to my Desktop.


Since the output from ROBOCOPY is written to the log file, the cmd window will not display the output from ROBOCOPY. If I wish to have this information written to both the log file and the cmd window for visual tracking of the backup process, then I can add the /tee option to each line in the .BAT file, as shown below.

Code:
robocopy E:\Data1 G:\Backups\Data1 /e /mir /np [B][COLOR=red]/te[/COLOR][COLOR=red]e[/COLOR][/B] /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np [COLOR=red][B]/tee[/B][/COLOR] /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np[COLOR=red][B] /tee[/B][/COLOR] /log+:backup_log.txt
pause
This is an example of the typical output to the the log file - it looks exactly the same as what is echoed to the cmd window.

Code:
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------
  Started : Sun Sep 18 23:35:01 2011
   Source : E:\Data1\
     Dest : G:\Backups\Data1\
    Files : *.*
 
  Options : *.* /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30 
------------------------------------------------------------------------------
                    2 E:\Data1\
------------------------------------------------------------------------------
               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         1         0         0         0
   Files :         2         0         2         0         0         0
   Bytes :   442.1 k         0   442.1 k         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00
   Ended : Sun Sep 18 23:35:01 2011
Since one of the data folders I am backing up is being copied across a network, I want to ensure that any possible network outages do not cause some critical files to be skipped in the backup. To do this, I can make use of the /z option in the 3rd line of my .BAT file (backup to my network storage) as shown below.

Code:
robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /tee /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /tee /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np [B][COLOR=red]/z[/COLOR][/B] /tee /log+:backup_log.txt
This option implements a "retry" for the copying. If I were part way through the copying process, and I lost connection with the network, then ROBOCOPY would automatically restart the copying at the point of failure once the network connection was re-established. It would retrying a million times every 30 seconds (the default settings shown in the image above). The only drawback with this option, is that it can significantly increase the backup time.

ROBOCOPY also has the ability to perform faster multi-threaded copying by simply using the option /mt. I can choose the number of threads to use by specifying a number between 1 and 128 after the /mt option, or if I just specify /mt without a number then the it will use 8 threads by default. In the example below, I use 4 threads to copy to my USB drive, and 8 threads (no number) to copy to my network drive.

Code:
robocopy E:\Data1 G:\Backups\Data1 /e /mir /np /tee [B][COLOR=red]/mt:4[/COLOR][/B] /log:backup_log.txt
robocopy F:\Data2 G:\Backups\Data2 /e /mir /np /tee [COLOR=red][B]/mt:4[/B][/COLOR] /log+:backup_log.txt
robocopy F:\Data3 Q:\Backups\Data3 /e /mir /np [COLOR=black]/z[/COLOR] /tee [COLOR=red][B]/mt[/B][/COLOR] /log+:backup_log.txt
Below is a template that you can use to create your own backup strategy using ROBOCOPY. Simply copy and paste the lines into a blank text document, and then edit as appropriate.

Code:
rem --- Edit the lines below to create your own backup strategy
rem --- The /mir option has been left out for safety sake
rem --- Add more lines for each new folder requiring backup
rem --- Specified 4 threads to use for multi-threaded copying
rem --- The results of the backup can be found in my_backup_log.txt 
robocopy <source> <destination> /e /np /tee /mt:4 /log:my_backup_log.txt
robocopy <source> <destination> /e /np /tee /mt:4 /log+:my_backup_log.txt
robocopy <source> <destination> /e /np /tee /mt:4 /log+:my_backup_log.txt
pause
   Tip

The can automate your backup's by using the Windows 7 Task Scheduler to run the .BAT file at specific times.

For more information please refer to this tutorial by Orbital Shark:
http://www.sevenforums.com/tutorials/12444-task-scheduler-create-new-task.html


I hope this brief tutorial helps you access the power and simplicity of ROBOCOPY to create some effective backup strategies.

Regards,
Golden
 
Last edited by a moderator:
How to use ROBOCOPY AFTER manually backing up

Hello,

Great thread on robocopy.

I have a NAS and manually copied over the files. I now want to use robocopy.

I am wary of using robocopy as my backup tool as I have some thoughts which may cause issues:

1) The datetime on the folders and files on the NAS are when I did the manual copy, not the source attributes, and so if I use the robocopy /MIR I am not sure what will happen.

How should I sync the NAS folder/files attributes back to the source with robocopy so I can use /MIR successfully?

Basically asking what should be the steps if a person used to copy folders manually and NOW wants to use robocopy? You guide seems to be for first time use and some points on how to transition from a manual process would be great.

2) Also, I have a number of source folders from many machines which I copy to ONE folder on the NAS. That is, all sub folders from multiple sources go to ONE folder on the NAS, which essentially is all the source sub folders under one folder on the NAS.

I want to be able to mirror the source locations to a "merged" single destination folder and only copy over changes.

Is that possible with robocopy?

Thanks!
 

My Computer

OS
Win 7 x64
Hi,

I'm not sure what would happen transitioning from manual copy to robocopy - all I can suggest is to setup a simple test case and experiment with that.

For the merged location, you can do that. This is what I have:

Code:
robocopy E:\Music G:\[B]General_Backup[/B]\Music /e /mir /mt:8 /R:3 /W:3
robocopy E:\Photo's G:\[B]General_Backup[/B]\Photo's /e /mir /mt:8 /R:3 /W:3
robocopy F:\Keys G:\[B]General_Backup[/B]\Keys /e /mir /mt:8 /R:3 /W:3

Again, its best to put a small test case together and check how it works.

Regards,
Golden
 

My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Golden Mk. I.4
OS
Windows 10 Pro x64 ; Xubuntu x64
CPU
Intel i7 860 @ 2.80 GHz O/C'ed to 4.0GHz
Motherboard
Gigabyte P55A-UD3R Rev.1. Award BIOS F13
Memory
16GB Corsair Vengance DDR3 @ 661 MHz Dual Channel (9-9-9-24)
Graphics Card(s)
EVGA NVidia GTX 560 1024MB
Sound Card
Realtek Integrated
Monitor(s) Displays
Dual Samsung SyncMaster 2494HS
Screen Resolution
1920*1080 and 1920*1080
Hard Drives
1*Samsung 840 EVO 120GB SSD;
1*OCZ Vertex 2 60GB SSD;
2*Samsung F3 SpinPoint 1TB in RAID0;
1*Samsung F1 SpinPoint 1TB;
2*Western Digital 1TB External USB 3.0
1*Western Digital 500GB External USB 3.0
1*Seagate 500GB External USB 2.0
PSU
Thermaltake ToughPower QFan 750W
Case
Thermaltake Element S VK60001W2Z
Cooling
Corsair H60 Water Cooling, 2*230mm and 2*80mm case fans
Keyboard
Logitech G110
Mouse
Logitech MX518
/MIR is perfectly safe, does not delete files from source

Warning
Use the /MIR option with caution - it has the ability to delete a file from both the source and destination under certain conditions.

This typically occurs if a file/folder in the destination has been deleted, causing ROBOCOPY to mirror the source to the destination. The result is that the same files in the source folder are also deleted. To avoid this situation, never delete any files/folders from the destination - delete them from the source, and then run the backup to mirror the destination to the source.

If in doubt, do not use the /MIR option, but be aware that backups will take longer.
For benefit of anyone following this tutorial: this section is incorrect. I checked with knowledgeable MS sources, and I and others tested this extensively.

/MIR is perfectly safe to use. /MIR does not delete files from source, ever. Even if you manually delete files from destination, /MIR will not delete files from source.

In fact, the only time Robocopy deletes files from source is if you use the /MOV option to move files, (which deletes from source after copying).

Please correct this otherwise good tutorial to remove the false warning about the useful /MIR option.
 
Last edited:

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
If you type robocopy /? at a command prompt you will see that:

/mir is the same as performing /purge and /e

Have a look at what the /purge option does.
 

My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Golden Mk. I.4
OS
Windows 10 Pro x64 ; Xubuntu x64
CPU
Intel i7 860 @ 2.80 GHz O/C'ed to 4.0GHz
Motherboard
Gigabyte P55A-UD3R Rev.1. Award BIOS F13
Memory
16GB Corsair Vengance DDR3 @ 661 MHz Dual Channel (9-9-9-24)
Graphics Card(s)
EVGA NVidia GTX 560 1024MB
Sound Card
Realtek Integrated
Monitor(s) Displays
Dual Samsung SyncMaster 2494HS
Screen Resolution
1920*1080 and 1920*1080
Hard Drives
1*Samsung 840 EVO 120GB SSD;
1*OCZ Vertex 2 60GB SSD;
2*Samsung F3 SpinPoint 1TB in RAID0;
1*Samsung F1 SpinPoint 1TB;
2*Western Digital 1TB External USB 3.0
1*Western Digital 500GB External USB 3.0
1*Seagate 500GB External USB 2.0
PSU
Thermaltake ToughPower QFan 750W
Case
Thermaltake Element S VK60001W2Z
Cooling
Corsair H60 Water Cooling, 2*230mm and 2*80mm case fans
Keyboard
Logitech G110
Mouse
Logitech MX518
I'm well aware that /MIR = /PURGE + /E. That will never delete files from source.

Microsoft Technet said:
/PURGE : Deletes destination files and directories that no longer exist in the source.
That means that Robocopy will delete files from destination, if you have deleted them from source.

Neither /PURGE nor /MIR will delete files from source. Please test it, you'll see.
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
First, congrats and thanks for the good article!
Now let’s get to my problem.
I tried to set up a back up strategy. When I tried the syntax directly in CMD there is no problem, and the files are copied properly. But when I try to set up a .bat file, the program does not run (it starts, but it does not finish, nor initialize). The file is located on my desktop.
I’ve attached a picture of cmd when I start the robo.bat file.

Here is the syntax:
robocopy d:\diploma d:\programi\dropbox\diploma /s /np /tee /log:d:\diploma\robo.txt
pause

What am I doing wrong?

Thanks
 

Attachments

  • robocopy.jpg
    robocopy.jpg
    331.5 KB · Views: 266

My Computer

OS
Windows 7 professional 64-bit
Try running the .bat as Administrator (a right-click command).
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
Are you able to run other .bat files from that location? (e.g. .bat files that aren't running Robocopy?)
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
I haven't tried that, because I don't have other bat file... This is the first bat I'm trying to make.
 

My Computer

OS
Windows 7 professional 64-bit
Make one to test. It could be as simple as this:

ECHO This is a test
PAUSE
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
Do you have UAC turned on, or disabled? (I'm assuming your in Windows 7?)
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
Try this: enable UAC, reboot, and then try running that batch file as Administrator (via right-click context menu).
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
Well, actually, something has changed... I enabled the UAC, run the app as admin, and it did run it right. Then turned the UAC off again, run as admin, worked, but if I run it without admin rights, it doesn’t work. So the solution is definitely to run it as an administrator. But now I have another problem... I tried to set the file’s privilege level to run as admin always, but I can’t... any suggestions?

Also, I scheduled a task to run the app every day. So I guess it would be a problem, if a can’t set the privilege level, right?
 

My Computer

OS
Windows 7 professional 64-bit
I have solved that problem too. As I’m running the app through Task Scheduler, I can assign that task the highest priority, so problem solved!

Thanks acornada for your effort and help!
 

My Computer

OS
Windows 7 professional 64-bit
Task Scheduler is one possible solution I would have suggested, but there are other ways too.

As you discovered, the robocopy batch file needs to be run as Admin, and I suspected that you had UAC disabled (which is really not a good idea). Some apps won't run as Admin properly if UAC is disabled, which is why I asked you to enable and test.

You're welcome.
 

My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Dell XPS 15 L502X
OS
Windows 10 Home, 64-bit
Yes, that is probably true, but that doesn't change the fact that UAC is quite a big pain in the ......
 

My Computer

OS
Windows 7 professional 64-bit
Back
Top