I was recently introduced to the very clever rsync terminal utility by my colleague Lev Kolobov.
Rsync is a fast, versatile, remote and local file-copying tool. It is run from the command line and comes preinstalled on Linux type operating systems, like macOS. It has many (many!) different modes to help transfer data from one location to another. I have been using it at work to copy large amounts of video and image data from one place to another.
The beauty of using rsync to copy data is if you have to stop a copy half way through you can. Then when you are ready to resume the copy simply run the command again and the transfer will pick up from where it left off. Super useful if your copying using your laptop and want to take it home at night!
This is the command I have been running at work in Terminal on my Mac:
rsync -vuahr –progress “SOURCE” “DESTINATION”
Here is a breakdown of the command:
“rsync” calls the utility.
“v” increases verbosity so you get more feed back about what the utility is doing.
“u” skips files that are newer at the destination, good if anyone has updated files since the last copy.
“a” archive mode will keep timestamps, permissions etc the same from the source to the destination.
“h” output numbers as human-readable.
“r” recurse into directories, copies folders and subfolders.
“–progress” show progress during transfer.
“SOURCE” the path of what you want to copy.
“DESTINATION” the path of where you want to copy to.
Here is an example:
rsync -vuahr –progress /Users/mrjack/Desktop/photos /Volumes/DRAKE/photos_bkup
All rsync flags and a description of what they do can be found here:
And here is the Linux reference page for rsync:
Also worth noting is the “-n” flag that will perform a dry run of the transfer and show you in the terminal what will change. Useful if you’re worried about deleting anything in the destination folder. You can also copy only files with a certain extension. Lev has been using to backup all of our Nuke scripts for example. Useful or what?!
As it’s a bit of a faff getting the paths and writing the command I’ve built an AppleScript App that asks for the source and destination folders using a GUI. It then runs the command in Terminal.
rSync1.0v4 can be downloaded here:
Moving forward – in v2 of this app it might be nice to add some if statements to ask the user if they would like to set extra flags. One flag for example that might be useful can mirror the changes to the source in the destination, basically deleting what is no longer in the source folder. Super useful for mirroring locations.
This has been a great project for coding (shell script and AppleScript) as well as understanding the very powerful and useful rsync. Happy transferring people!
Please note – I am not responsible with how this utility works on your system. I’m posting here for educational purposes only. Use at your own risk.