Skip to main content



rsync [options] source [destination]


  • -a, --archive copy all metadata with sync (symbolic links, file permissions, user & group ownership and timestamps etc.)
  • -v, --verbose will give you summary of process
  • -h, --human-readable format Outputs in a human readable format.
  • -z, --compress compress file data during the transfer


Copy data from foo to bar

rsync -avh foo/ bar/



rsync local-file user@remote-host:remote-file

Rsync using ssh

rsync -avhze ssh /foo user@remote-host:/tmp/

Rsync with particular file permissions

rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/

Rsync with --ignore-existing-files

Does not ignore directory

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/

Show progress during transfer

rsync -avhe ssh --progress /foo user@remote-host:/tmp/

Update the remote only if there is a newer version is on the local filesystem ( timestampz based )

rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/

Automatically delete files from local-host after successful transferring

delete only files not directories

rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp

Performing a Dry run with rsync

rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/