A while ago I had to sync files from one server to another. The reason? I was responsible for moving all the application and websites hosted on a old server to a new, faster server with better security and a updated operating system. Since the servers were remote, I couldn’t simply use a USB drive and transfer the files from one server to another.
Instead, I used a handy unix command line tool called rsync. It let me copy all the files I needed from one server to another over SSH. The command line I used was:
The basic rsync command can be used to copy files from one folder to another. I also find it particularly useful to remove SVN directories from my source code, before sending it to clients. This is a typical command:
The r
flag is used to recursively copy folders, so entire folder structures can be copied effortlessly. The r
flag can be left out if only files need to be copied. The v
flag is used to output the list of files and folders that are being copied so you can see the progress in real-time.
The z
flag compresses the transfer, useful if you have bandwidth limits to stick to when transferring data over the internet. The u
flag only copied updated files that were changed since the last sync – this makes it easier to keep files up-to-date between servers (providing that files didn’t change on the destination server).