If you know me, you know I'm a huge fan of the program Rsync. It's fast, it's reliable, it's installed by default on every Mac and Linux machine, and it offers a wealth of options, and it's free! What's not to like?
A while ago Dusty McCord and I got together to talk about what the perfect settings for rsync would be. We evaluated the needs of on set data management, and what is most important to a DIT. We came up with this quick list of what we needed: file integrity must be preserved, all files hidden or not must be copied, preserve the original time stamp, files must be checksummed to ensure playback, we need to see the progress.
With those options in mind, this is the magic recipe we came up with:
rsync -rltWDcv --progress
It looks prety confusing doesn't it? It's pretty simple when you know the parts. The first parts, rsync, just tells the computer to use the rsync command. The following arguments -rltWDcv are options for the rsync command (full details on thersync man page), and --progress indicates that we, the user, would like to see the progress of the file transfer. It doesn't show a progress bar, but it does tell you how many files its checked and how many are left.
Let's break down the arguments:
r recursive, copy's the files of the source directory and the sub directories
l copy symlinks, normally we would not encounter these, but there's always a possiblity
t copy time, this copies the timestamp of the original file
W whole file, this copies the whole file instead of just the bytes that are different
D devices, another item we shouldn't encounter, but just in case...
c checksum, this is the most secure method of comparing two files, read more here.
v verbose, displays a log of each file transaction, that way it's easy to spot if something went wrong
There we go. Using free and open source tools we have crafted a command that is extremely reliable, which on set is extremely valuable. If this article is too complicated for you, and you need to understand the usage of Rsync, take a look at this primer on how to use Rsync.