rsync (Remote Synchronization) is a cross-platform console application for data synchronization with minimal traffic consumption.

installation for CentOS:

yum -y install rsync  

For Debian/Ubuntu:

sudo aptitude install rsync  

Here is an example of local synchronization:

sudo rsync -avh --delete /var/www/ /root/backup/www/  

Synchronization of data to a remote server:

sudo rsync -avh --delete /var/www/ root@192.168.1.50:/root/backup/www/  

Synchronization of data to local from remote server:

sudo rsync -avh root@192.168.1.50:/var/www/ /root/backup/www/  

Via SSH with a non-standard port:

sudo rsync -avh -e "ssh -p 1111" root@192.168.1.50:/var/www/ /root/backup/www/  

To exclude some subdirectories, for example if we sync /var/www/ and want to exclude /var/www/dir/ and /var/www/dir/tmp/, we can add to the command:

--exclude='dir/' --exclude='dir/tmp/'

To move files from the remote server to the local one:

sudo rsync -avh --remove-source-files root@192.168.1.50:/var/www/ /var/www/  

Example of copying mysql data to another disk:

rsync -vrplogDtH -progress /var/lib/mysql/ /newhdd/var/lib/mysql/  

The built-in help can be obtained by the command:

man rsync  

In /etc/default/rsync you can configure rsync to run as a daemon.

When synchronizing with other servers, rsync must also be installed on them or SSH must be specified.

Startup parameters

  • -v (-verbose, detailed mode)
  • -r (-recursive, to copy data recursively)
  • -R (-relative, use relative paths when creating symbolic links)
  • -a (-archive, archive mode, copy data recursively, preserving symlinks, permissions and other information)
  • -b (-backup, backup mode, see also -backup-dir=DIR and -suffix=SUFFIX)
  • -c (-checksum, checksum instead of time and size)
    -delete (remove files)
  • -f (-filter=RULE, create filtering rule)
  • -h (-human-readable, output data in human-readable format, see also -progress)
  • -h (-hard-links, store hard-links)
  • -n (-dry-run, trial mode without any changes)
  • -p (-perms, save rights)
  • -z (-compress, compress data during transfer, see also -compress-level=NUM and -skip-compress=LIST)
  • -x (-one-file-system, do not go beyond current mount point)
  • -q (-quiet, short mode)
  • -W (-whole-file, full copy instead of copying changed data)
Updated Sept. 15, 2024