RSYNC

Section: rsync (1)
Updated: 3/7/1996
Index Return to Main Contents
 

NAME

rsync - faster, flexible replacement for rcp  

SYNOPSIS


   rsync [options] [user@]host:path path

OR


   rsync [options] path [user@]host:path 

 

DESCRIPTION

rsync is a program that behaves in much the same way that rcp does, but has many more options and uses the rsync remote-update protocol to greatly speedup file transfers when the destination file already exists.

The rsync remote-update protocol allows rsync to transfer just the differences between two sets of files across the network link, using an efficient checksum-search algorithm described in the technical report that accompanies this package.

Some of the additional features of rsync are:

- support for copying links, devices, owners, groups and permissions

- exclude and exclude-from options similar to GNU tar

- a CVS exclude mode for ignoring the same files that CVS would ignore

- can use any transparent remote shell, including rsh or ssh

- does not require root privilages

- pipelining of file transfers to minimise latency costs

 

SETUP

See the file README for installation instructions.

Once installed you can use rsync to any machine that you can use rsh to. rsync uses rsh for its communications, unless both the source and destination are local.

You can also specify a alternative to rsh, by either using the -e command line option, or by setting the RSYNC_RSH environment variable.

One common substitute is to use ssh, which offers a high degree of security.

 

USAGE

You use rsync in the same way you use rcp. You must specify a source and a destination, one of which must be remote.

Perhaps the best way to explain the syntax is some examples:

        rsync *.c foo:src/

this would transfer all files matching the pattern *.c from the current directory to the directory src on the machine foo. If any of the files already exist on the remote system then the rsync remote-update protocol is used to update the file by sending only the differences. See the tech report for details.

        rsync -avz foo:src/bar /data/tmp

recursively transfer all files from the directory src/bar on the machine foo into the /data/tmp/bar directory on the local machine. The files are transferred in "archive" mode, which ensures that symbolic links, devices, attributes, permissions, ownerships etc are preserved in the transfer. Additionally compression will be used to reduce the size of data portions of the transfer.

You can also use rsync in local-only mode, where both the source and destination don't have a ':' in the name. In this case it behaves like an improved copy command.

 

EXAMPLES

Here are some examples of how I use rsync.

To backup my wifes home directory, which consists of large MS word files and mail folders I use a cron job that runs


        rsync -Cavz . arvidsjaur:backup

each night over a PPP link to a duplicate directory on my machine "arvidsjaur".

To synchronise my samba source trees I use the following Makefile targets:


      get:
       rsync -avuzb --exclude '*~' samba:samba/ .


      put:
       rsync -Cavuzb . samba:samba/


      sync: get put

this allows me to sync with a CVS directory at the other end of the link. I then do cvs operations on the remote machine, which saves a lot of time as the remote cvs protocol isn't very efficient.

I mirror a directory between my "old" and "new" ftp sites with the command


      rsync -az -e ssh --delete ~ftp/pub/samba/ nimbus:"~ftp/pub/tridge/samba" 

this is launched from cron every few hours.

 

OPTIONS

rsync uses the GNU long options package. Many of the command line options have two varients, one short and one long. These are shown below separated by commas. Some options only have a long varient.

-h, --help

Print a short help page describing the options available in rsync

--version

print the rsync version number and exit

-v, --verbose

This option increases the amount of information you are given during the transfer. By default rsync works silently. A single -v will give you information about what files are being transferred and a brief summary at the end. Two -v flags will give you information on what files are being skipped and slightly more information at the end. More than two -v flags should only be used if you are debugging rsync

-I, --ignore-times

Normally rsync will skip any files that are already the same length and have the same timestamp. This option turns off this behaviour.

-c, --checksum

This forces the sender to checksum all files using a 128-bit MD4 checksum before transfer. The checksum is then explicitly checked on the receiver and any files of the same name which already exist and have the same checksum and size on the receiver are skipped. This option can be quite slow.

-a, --archive

This is equivalent to -rlptDog. It is a quick way of saying I want recursion and want to preserve everything.

-r, --recursive

This tells rsync to copy directories recursively

-b, --backup

With this option pre-existing destination files are renamed with a ~ extension as each file is transferred. You can control the backup suffix using the --suffix option.

-u, --update

This forces rsync to skip any files for which the destination file already exists and is newer than the source file.

-l, --links

This tells rsync to recreate symbolic links on the remote system to be the same as the local system. Without this option all symbolic links are skipped.

-H, --hard-links

This tells rsync to recreate hard links on the remote system to be the same as the local system. Without this option hard links are treated like regular files.

Note that rsync can only detect hard links if both parts of the link are in the list of files being sent.

-p, --perms

This option causes rsync to update the remote permissions to be the same as the local permissions.

-o, --owner

This option causes rsync to update the remote owner of the file to be the same as the local owner. This is only available to the super-user.

-g, --group

This option causes rsync to update the remote group of the file to be the same as the local group.

-D, --devices

This option causes rsync to transfer character and block device information to the remote system to recreate these devices. This option is only available to the super-user.

-t, --times

This tells rsync to transfer modification times along with the files and update them on the remote system

-n, --dry-run

This tells rsync to not do any file transfers, instead it will just report the actions it would have taken.

-S, --sparse

Try to handle sparse files efficiently so they take up less space on the destination.

-x, --one-file-system

This tells rsync not to cross filesystem boundaries when recursing. This is useful for transferring the contents of only one filesystem.

--delete

This tells rsync to delete any files on the receiving side that aren't on the sending side. This option can be dangerous if used incorrectly!

It is a very good idea to run first using the dry run option (-n) to see what files would be deleted to make sure important files aren't listed.

For example, one user was burnt by the following command:


  rsync -av --delete /usr/src remote:/tmp

rsync happily transferred the contents of /usr/src to /tmp/src on the destination then deleted everything else in /tmp. Nasty! It would have been even nastier if he had used his home directory instead of /tmp.

The correct way to achieve what this user probably wanted is this:


  rsync -av --delete /usr/src/ remote:/tmp/src

in this case the deletions only occur inside the tree /tmp/src.

The moral of the story is to use the -n option until you get used to the behaviour of --delete.

NOTE: It also may delete files on the destination if the sending side can't open them or stat them. This is a bug that hopefully will be fixed in a future release.

-B , --block_size BLOCKSIZE

This controls the block size used in the rsync algorithm. See the technical report for details.

-e, --rsh COMMAND

This option allows you to choose an alternative remote shell program to use for communication between the local and remote copies of rsync. By default rsync will use rsh, but you may like to instead use ssh because of its high security.

You can also choose the remote shell program using the RSYNC_RSH environment variable.

-e, --rsync-path PATH

Use this to specify the path to the copy of rsync on the remote machine. Useful when its not in your path.

--exclude FILE

This option allows you to selectively exclude certain files from the list of files to be transferred. This is most useful in combination with a recursive transfer.

The option FILE can either be a file name or a shell wildcard expression. If it is a directory name then rsycn will not recurse into directories of that name.

You may use as many --exclude options on the command line as you like to build up the list of files to exclude.

If the filename is a single ! then the exclude list is reset.

--exclude-from FILE

This option is similar to the --exclude option, but instead it adds all filenames listed in the file FILE to the exclude list.

-C, --cvs-exclude

This is a useful shorthand for excluding a broad range of files that you often don't want to transfer between systems. It uses the same algorithm that CVS uses to determine of a file should be ignored.

The exclude list is initialised to:

RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* * *.old *.bak *.BAK *.orig *.rej .del-* *.a *.o *.obj *.so *.Z *.elc *.ln core

then files listed in a $HOME/.cvsignore are added to the list and any files listed in the CVSIGNORE environment variable (space delimited).

Finally in each directory any files listed in the .cvsignore file in that directory are added to the list.

--suffix SUFFIX

This option allows you to override the default backup suffix used with the -b option. The default is a ~.

--csum-length LENGTH

By default the primary checksum used in rsync is a very strong 16 byte MD4 checksum. In most cases you will find that a truncated version of this checksum is quite efficient, and this will decrease the size of the checksum data sent over the link, making things faster.

You can choose the number of bytes in the truncated checksum using the --csum-length option. Any value less than or equal to 16 is valid.

Note that if you use this option then you run the risk of ending up with a incorrect target file. The risk with a value of 16 is microscopic and can be safely ignored (the universe will probably end before it fails) but with smaller values the risk is higher.

-z, --compress

With this option, rsync compresses any data from the source file(s) which it sends to the destination machine. This option is useful on slow links. The compression method used is the same method that gzip uses.

Note this this option typically achieves better compression ratios that can be achieved by using a compressing remote shell, or a compressing transport, as it takes advantage of the implicit information sent for matching data blocks.

 

BUGS

user ids and group ids are transferred using their numerical value

times are transferred as unix time_t values

file permissions, devices etc are transferred as native numerical values

see also the comments on the -delete option

 

VERSION

This man page is current for version 1.5 of rsync

 

CREDITS

rsync was written by Andrew Tridgell and Paul Mackerras. They may be contacted via email at Andrew.Tridgell@anu.edu.au and Paul.Mackerras@cs.anu.edu.au

rsync is distributed under the GNU public license. See the file COPYING for details.

The primary ftp site for rsync is ftp://samba.anu.edu.au/pub/rsync.

We would be delighted to hear from you if you like this program.

This program uses the zlib compression library written by Jean-loup Gailly and Mark Adler.

 

THANKS

Thanks to Richard Brent, Brendan Mackay, Bill Waite, Stephen Rothwell and David Bell for helpful suggestions and testing of rsync. I've proabably missed some people, my apologies if I have.


 

Index

NAME
SYNOPSIS
DESCRIPTION
SETUP
USAGE
EXAMPLES
OPTIONS
BUGS
VERSION
CREDITS
THANKS

This document was created by man2html, using the manual pages.
Time: 06:14:25 GMT, April 11, 2025