rsync is useful when large amounts of data need to be transmitted regularly while not changing too much. This is, for example, often the case when creating backups. Another application concerns staging servers. These are servers that store complete directory trees of Web servers that are regularly mirrored onto a Web server in a DMZ.
rsync can be operated in two different modes. It
can be used to archive or copy data. To accomplish this, only a remote shell,
like ssh, is required on the target
system. However, rsync can also be used as a
daemon
to provide directories to the network.
The basic mode of operation of rsync does not require any special configuration. rsync directly allows mirroring complete directories onto another system. As an example, the following command creates a backup of the home directory of tux on a backup server named sun:
rsync -baz -e ssh /home/tux/ tux@sun:backup
The following command is used to play the directory back:
rsync -az -e ssh tux@sun:backup /home/tux/
Up to this point, the handling does not differ much from that of a regular copying tool, like scp.
rsync should be operated in
“rsync” mode to make all its features
fully available. This is done by starting the
rsyncd daemon on one of the
systems. Configure it in
the file /etc/rsyncd.conf
. For example,
to make the directory /srv/ftp
available with
rsync, use the following configuration:
gid = nobody uid = nobody read only = true use chroot = no transfer logging = true log format = %h %o %f %l %b log file = /var/log/rsyncd.log [FTP] path = /srv/ftp comment = An Example
Then start rsyncd with
rcrsyncd start
.
rsyncd can also be started automatically during
the boot process. Set this up by activating this service in the
runlevel editor provided by YaST or by manually entering the command
insserv rsyncd
.
rsyncd can alternatively be started by
xinetd. This is, however, only recommended for
servers that rarely use
rsyncd.
The example also creates
a log file listing all connections. This file is stored in
/var/log/rsyncd.log
.
It is then possible to test the transfer from a client system. Do this with the following command:
rsync -avz sun::FTP
This command lists all files present in the directory
/srv/ftp
of the server. This request is also logged in
the log file /var/log/rsyncd.log
. To start an
actual transfer, provide a target directory. Use
.
for the current directory. For example:
rsync -avz sun::FTP .
By default, no files are deleted while synchronizing with
rsync. If this should be forced, the additional
option --delete
must be stated.
To ensure that no newer files are deleted, the option
--update
can be used instead. Any conflicts that arise
must be resolved manually.
Important information about rsync is provided in
the man pages man rsync
and
man rsyncd.conf
.
A technical reference about the operating principles of
rsync is featured in
/usr/share/doc/packages/rsync/tech_report.ps
.
Find latest news about rsync on the project
Web site at http://rsync.samba.org/.