Making backups regularly is one of the most relevant tasks for a Linux user. In the fourth chapter of ‘Backup methods’ I will show you one of the most popular copying tools: rsync.

rsync can copy from a source to a destination, based on last modified time or file size. Destination folder does not need to exist.

rsync [<options>] <SOURCE> <DEST>

Options

  • --recursive, -r: recursive into directories.
  • --times, -t: preserve modification times.
  • --dryrun, -n: perform a trial run (no changes made).
  • --perms, -p: preserve permissions.
  • --acls, -A: preserve ACLs (How to set permissions for specific users). Implies --perms.
  • --archive, -a: archive mode, is a shortcut for recursive into directories, copy symlinks as symlinks, preserve permissions, preserve modification times, preserve group, preserve owner (using “sudo”), preserve device files (using “sudo”) and preserve special files.
  • --verbose, -v: increase verbosity.
  • -rsh=<COMMAND>, -e <COMMAND>: specify the remote shell to use. See Using with SSH.
  • --compress, -z: compress file data during the transfer.
  • --checksum, -c: update based on checksum, not modification date or file size.
  • --update, -u: update based only on modification date, not file size.
  • --backup --backup-dir=<DIR>, -b --backup-dir=<DIR>: Put copied files inside <DIR>.
  • More options on man page (man rsync).

Copying locally

# Only copies one level (skips directories)
rsync origin/* dest/
# Recursive copy
rsync -r origin/ dest/
# Preserve last modification time
rsync -tr origin/ dest/
# Create a folder inside dest/ (called 'bck') for copied files
rsync -r -b --backup-dir=bck origin/ dest/

Using with SSH

Check rsync and SSH: synchronize a local folder with a remote one.