rsync

rsync #

Useful little command line tool to synchronize files across directories, even remote directories.

It compares two paths - a source and a target - for differences, and updates the target to match the source.

Basic Commands #

To copy a source directory into a target (note the nuance):

rsync <source> <target>

TO copy the contents of the source into a target directory:

rsync <source>/ <target>

Options #

To delete files on the target that no longer exist in the source (useful if we’re using rysnc for backups), add a --delete parameter:

rsync --delete <source>/ <target>

To make the sync verbose, add a -v option.

To make the sync archiving, which is to say that the sync is recursive (i.e., it goes deep down through the directory structure) and also to preserve file attribtues, use a -a option.

TO use both archiving and verbose options, use an -av option. This really should be a default option.

Let’s test this out #

Some commands to run to prove to yourself how this works.

cd Desktop
mkdir test
cd test
mkdir dir1
mkdir dir2
touch dir1/random_file
rsync -av dir1/ dir2

At this point, if you run tree -h, you should see:

.
├── dir1
│   └── random_file
└── dir2
    └── random_file

^ Note that random_file, which was not created directly for dir2, now exists within dir2 because it was rsync’d from dir1.