Robocopy switches for incremental drive backup?

2

I have two hard drives:

G: is an external USB drive connected to a Windows 10 PC H: is a network drive (another USB drive connected to the USB port of the home network router's USB port)

I have copied all files and sub-folders from G:/my_data_folder onto H:/my_data_folder. Right now, H:/my_data_folder is an exact copy of G:/my_data_folder.

Now I want to create a Robocopy command that I can run periodically on the Win10 PC, that will copy from G: to H:

  • any file/folder in G:/my_data_folder that doesn't already exist in H:/my_data_folder
  • any file in G:/my_data_folder that does already exist in H:/my_data_folder but is a more recent version (ie, has been saved more recently). This newly copied file will over-write the older file on H:.

My understanding of Robocopy is that NOT copying existing files of the same date/time is the default behavior, so I don't need to explicitly exclude them.

I do NOT want H:/my_data_folder to mirror G:/my_data_folder. That is, never erase anything from H:/my_data_folder, even if it is now absent from G:/my_data_folder.

I don't need a log file, but I want to see what it did on screen.

Here's my attempt to compose the appropriate robocopy command:

robocopy g:/my_data_folder h:/my_data_folder /e /np /fft /mt:8 /z /r:5 /w:5

where:

  • /e = copy even empty directories
  • /np = no file copy progress - don't need it
  • /fft = in case of any date/time errors due to network drive
  • /mt:8 = use 8 concurrent threads to speed things up
  • /z = restartable mode so it can recover from an interrupted transfer
  • /r:5 = try maximum 5 restarts
  • /w:5 = wait 5 seconds between restarts

Will this do what I want? Have I missed any critical switches for such a task?

Thanks.

Jim_1234

Posted 2019-08-29T18:05:31.600

Reputation: 101

Answers

2

Your script is perfect as it is.

Just to address the slightly confusing "use /XX just in case" argument made in harrymc's answer:

"To avoid deletions in the target folder, I suggest to add the /XX switch. This is supposed to be the default, but I would add it explicitly just in case."

I recommend against adding redundant switches "just in case". The /XX switch will do nothing in your situation, other than create confusion.

The page cited in the other answer clearly explains what the purpose of that switch is:

"/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."

As your script has neither the /MIR nor the /PURGE switches, we can say with 100% certainty that adding /XX "just in case` is redundant.

I've been using Robocopy for years and have pushed around many terabytes of data, all without ever using the /XX switch. Robocopy has never once deleted a single "extra" file.

Further clarification can be seen here.

Just wanted to clear that up!

Mr Ethernet

Posted 2019-08-29T18:05:31.600

Reputation: 3 563

-1

To avoid deletions in the target folder, I suggest to add the /xx switch. This is supposed to be the default, but I would add it explicitly just in case.

/xx     Excludes extra files and directories.

This switch is further described as:

/XX : eXclude "eXtra" files and dirs (present in destination but not source)
      This will prevent any deletions from the destination. (this is the default)

harrymc

Posted 2019-08-29T18:05:31.600

Reputation: 306 093