Linux Command Utility [/code]rsync[/code] is a very robust, fast content copy command which can be used within the same linux host and over a connected network between 2 linux hosts. It is a special program which has intelligence in terms of not copying data repetitively if the destination has the same copy as source based on file checksum calculations.
We shall explore some of the practical
rsync command features and demonstrate them
Syntax of command
$ rsync [OPTIONS] /source/path/ /dest/path/
rsync on the same host?
[vamshi@linuxcent ~]$ rsync -avx newfile.txt /tmp/ sending incremental file list newfile.txt sent 133 bytes received 35 bytes 336.00 bytes/sec total size is 21 speedup is 0.12
Running rsync between two hosts in a network
$ rsync [OPTIONS] host:/source/path/ /dest/path/
rsync in Dry-run mode by using [/code]-n[/code] option
$ rsync -avn Source_host:/source/path Destination_host:/dest/path
This generally runs over the SSH protocol and you are required to enter the login credentials appropriately.
How to invoke SSH remote shell in rsync?
In case you are using a SSH keys then you have to invoke the remote shell to authenticate to the remote server with your private keypair. This is Demonstrated as follows:
$ rsync -avxn --rsh="ssh -i ~/.ssh/vamshi_id_rsa" vamshi@<Your.Source.IP.DNS>:"/<Source_Path>" "/<Destination_Path>"
For more information about the SSH key setup, Please refer to our SSH keys section
How to persist Hard links on the system using
rsync. Following is the Demonstration
-H. Using this option enables to preserve the HardLinks over the destination copy of the data.
$ rsync -avHx /path/to/source/ /path/to/destination/
The most practical example of working with rsync comes in replicating mission critical data or transferring Database dumps within the DB servers etc.,
How to exclude certain directories in rsync in linux ?
--exclude filter option is demonstrated as follows:
$ rsync -avx /source/path/to/backup-v31/ /dest/databackups/backup-v31/ --exclude="DontTouchMyData/"
Using the delete option, enables us to delete the directories from the source upon completion of the operation.
Note: This operation has the same effects as the
mv command on linux but performed over the network between source and destination hosts.
$ rsync -avx --delete /source/path/to/backup-v31/ /dest/databackups/backup-v31/ --exclude="data/" --exclude="data/board" --exclude="cache/apt" --exclude="opt"
rsync output to a file by appending output redirection symbol to a file on current location
$rsync -avx --delete /source/path/to/backup-v31/ /dest/databackups/backup-v31/ --exclude="data/" --exclude="data/board" --exclude="cache/apt" --exclude="opt" >>/tmp/rsync.log