Rsync – Helpful linux command reference

Rsync is another very powerful command that is used to sync 2 directories between servers and only transfer the new files to the server. This is a great method for backups as it is low on bandwidth and it is also commonly used to keep clustered servers working together. The ending slashes are very important when using rsync. If you are not familiar with how it works simply always make sure to have an ending slash on both the source and the destination and it should be fine.

The general form is:
rsync source destination
A few real life examples are:
rsync -vrplogDtH /old/usr/local/apache/conf /usr/local/apache
That will sync the /old/usr/local/apache/conf/ directorty to the /usr/local/apache/conf/ directory on the same server. If you want to use rsync to go between servers then use the following:
rsync -ave ssh root@ e-mail address is being protected from spam bots, you need JavaScript enabled to view it :/backup/ /backup/
That will take the backup directory on and copy it to the server the command is run from. The command will also accept a remote destination if you adjust the command line accordingly. Below is the readout of rsync –help which also shows more of the command options available:
# rsync –help
rsync version 2.5.7 protocol version 26
Copyright (C) 1996-2002 by Andrew Tridgell and others
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
IPv6, 64-bit system inums, 64-bit internal inums
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.
Usage: rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST
or rsync [OPTION]… SRC [SRC]… DEST
or rsync [OPTION]… [USER@]HOST::SRC [DEST]
or rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
or rsync [OPTION]… SRC [SRC]… rsync://[USER@]HOST[:PORT]/DEST
SRC on single-colon remote HOST will be expanded by remote shell
SRC on server remote HOST may contain shell wildcards or multiple
sources separated by space as long as they have same top-level
-v, –verbose increase verbosity
-q, –quiet decrease verbosity
-c, –checksum always checksum
-a, –archive archive mode, equivalent to -rlptgoD
-r, –recursive recurse into directories
-R, –relative use relative path names
-b, –backup make backups (default ~ suffix)
–backup-dir make backups into this directory
–suffix=SUFFIX override backup suffix
-u, –update update only (don’t overwrite newer files)
-l, –links copy symlinks as symlinks
-L, –copy-links copy the referent of symlinks
–copy-unsafe-links copy links outside the source tree
–safe-links ignore links outside the destination tree
-H, –hard-links preserve hard links
-p, –perms preserve permissions
-o, –owner preserve owner (root only)
-g, –group preserve group
-D, –devices preserve devices (root only)
-t, –times preserve times
-S, –sparse handle sparse files efficiently
-n, –dry-run show what would have been transferred
-W, –whole-file copy whole files, no incremental checks
–no-whole-file turn off –whole-file
-x, –one-file-system don’t cross filesystem boundaries
-B, –block-size=SIZE checksum blocking size (default 700)
-e, –rsh=COMMAND specify the remote shell
–rsync-path=PATH specify path to rsync on the remote machine
-C, –cvs-exclude auto ignore files in the same way CVS does
–existing only update files that already exist
–ignore-existing ignore files that already exist on the receiving side
–delete delete files that don’t exist on the sending side
–delete-excluded also delete excluded files on the receiving side
–delete-after delete after transferring, not before
–ignore-errors delete even if there are IO errors
–max-delete=NUM don’t delete more than NUM files
–partial keep partially transferred files
–force force deletion of directories even if not empty
–numeric-ids don’t map uid/gid values by user/group name
–timeout=TIME set IO timeout in seconds
-I, –ignore-times don’t exclude files that match length and time
–size-only only use file size when determining if a file should be transferred
–modify-window=NUM Timestamp window (seconds) for file match (default=0)
-T –temp-dir=DIR create temporary files in directory DIR
–compare-dest=DIR also compare destination files relative to DIR
-P equivalent to –partial –progress
-z, –compress compress file data
–exclude=PATTERN exclude files matching PATTERN
–exclude-from=FILE exclude patterns listed in FILE
–include=PATTERN don’t exclude files matching PATTERN
–include-from=FILE don’t exclude patterns listed in FILE
–version print version number
–daemon run as a rsync daemon
–no-detach do not detach from the parent
–address=ADDRESS bind to the specified address
–config=FILE specify alternate rsyncd.conf file
–port=PORT specify alternate rsyncd port number
–blocking-io use blocking IO for the remote shell
–no-blocking-io turn off –blocking-io
–stats give some file transfer stats
–progress show progress during transfer
–log-format=FORMAT log file transfers using specified format
–password-file=FILE get password from FILE
–bwlimit=KBPS limit I/O bandwidth, KBytes per second
–write-batch=PREFIX write batch fileset starting with PREFIX
–read-batch=PREFIX read batch fileset starting with PREFIX
-h, –help show this help screen
-4 prefer IPv4
-6 prefer IPv6