Skip to main content

rsync tips


Try your command before doing it for real with the dry-run option:

  • -n, --dry-run - Perform a trial run with no changes made

For example:

rsync -navh ~ rafi-desk:/mnt/backup/


Simply using the -a option applies the sensible rlptgoD defaults:

  • -a, --archive - Archive mode; equals -rlptgoD (no -H,-A,-X)
    • -r, --recursive - Recurse into directories
    • -l, --links - Copy symlinks as symlinks
    • -p, --perms - Preserve permissions
    • -t, --times - Preserve modification times
    • -g, --group - Preserve group
    • -o, --owner - Preserve owner (super-user only)
    • -D - same as --devices --specials:
      • --devices - Preserve device files (super-user only)
      • --specials - Preserve special files

Examining Result

Use the --log-file option to examine transfer. rsync might be trying to update all the group names on destination directories, this is because you're using the option a or g to preserve group. You could use the --chmod option to override that:

rsync --log-file=my.log --chown=rafi:staff -navh rafi-desk:/mnt/media/music/ Music/


Use the --delete option to delete extraneous files from destination directories. Use with caution!

Filename Encoding

If you're syncing from a Mac running OSX to a Linux machine, you'll need to use --iconv=LOCAL,REMOTE to convert the encoding:

rsync --iconv=UTF8-MAC,UTF-8 --chown=rafi:staff -avh rafi-desk:/mnt/media/music/ Music/

File Matching

 -c, --checksum              skip based on checksum, not mod-time & size
-u, --update skip files that are newer on the receiver
--existing skip creating new files on receiver
--ignore-existing skip updating files that already exist on receiver
-I, --ignore-times don't skip files that match in size and mod-time
--size-only skip files that match in size
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE


The --verbose option will apply certain info flags. You could also use --info with your choice of output. Run rsync --info=help to get a list of possible flags.

 -v, --verbose               increase verbosity
--info=FLAGS fine-grained informational verbosity
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--list-only list the files instead of copying them