rsync command examples

The rsync command is a utility that is used to synchronize files and directories between two locations. It is a powerful tool that is commonly used for backups, data synchronization, and transferring files between servers. rsync is particularly useful because it only transfers the differences between files, rather than transferring the entire file. This makes it much faster than other file transfer utilities such as cp or scp.

Here are some examples of how to use the rsync command:

To copy a local file to a remote server:

rsync file.txt username@remote:/path/to/destination

To copy a directory and its contents from a local machine to a remote server:

rsync -avz /path/to/local/directory username@remote:/path/to/destination

To copy a file from a remote server to a local machine:

rsync username@remote:/path/to/source /path/to/local/destination

To copy a directory and its contents from a remote server to a local machine:

rsync -avz username@remote:/path/to/source /path/to/local/destination

Note that the -a flag stands for “archive” and preserves the file attributes and permissions, while -v stands for “verbose” and provides more detailed output during the transfer, and -z stands for “compress” and compresses the data during the transfer to speed up the transfer.

Now, let’s compare rsync with the scp command, which is another utility used for transferring files between servers. scp stands for “secure copy” and uses the Secure Shell (SSH) protocol to transfer files. Like rsync, scp can be used to transfer files between local and remote machines. Here is an example of using scp to copy a file from a local machine to a remote server:

scp file.txt username@remote:/path/to/destination

And here is an example of using scp to copy a file from a remote server to a local machine:

scp username@remote:/path/to/source /path/to/local/destination

There are several scenarios where you might want to use rsync rather than scp:

  1. When transferring large files or directories: rsync is generally faster than scp because it only transfers the differences between files, rather than transferring the entire file.
  2. When preserving file attributes and permissions: rsync has the option to preserve file attributes and permissions with the -a flag, while scp does not have this option.
  3. When transferring multiple files: rsync allows you to specify multiple files or directories to transfer, while scp only allows you to transfer one file or directory at a time.
  4. When needing more control over the transfer process: rsync has a wide range of options and features that allow you to customize the transfer process, such as the ability to exclude certain files or directories, specify a transfer rate, and compress the data during the transfer. scp has fewer options and is generally more basic in its functionality.

rsync command options

Here is a list of some of the main arguments for the rsync command with a brief description:

  • -a: archive mode, which preserves file attributes and permissions
  • -v: verbose mode, which provides more detailed output during the transfer
  • -z: compress mode, which compresses the data during the transfer to speed up the transfer
  • -r: recursive mode, which copies directories recursively
  • -t: preserve times, which preserves the modification times of the source files
  • -h: human-readable, which displays file sizes in a human-readable format
  • -n: dry run, which performs a trial run without actually transferring any files
  • --delete: delete files that are not present in the source location
  • --exclude=PATTERN: exclude files that match the specified pattern
  • --include=PATTERN: include files that match the specified pattern
  • --max-size=SIZE: only transfer files that are smaller than the specified size
  • --bwlimit=RATE: limit the transfer rate to the specified rate

Note that this is not an exhaustive list of all the arguments for rsync, and there are many other options and features available. You can find more information on the rsync command and its arguments by running the man rsync command or by consulting the documentation on the rsync website.

how to synchronise a remote directory with rsync

To synchronize a remote directory using rsync, you can use the following command:

rsync -avz username@remote:/path/to/source /path/to/local/destination

This command will transfer the files and directories from the specified remote source directory to the local destination directory, and will preserve file attributes and permissions with the -a flag, provide verbose output with the -v flag, and compress the data during the transfer with the -z flag.

Note that this command will overwrite any existing files in the local destination directory with the same name as the files in the remote source directory. If you want to preserve the existing files in the local destination directory and only transfer new or modified files, you can use the --update flag.

For example:

rsync -avzu username@remote:/path/to/source /path/to/local/destination

This will only transfer new or modified files, and will skip files that are already present in the local destination directory and have the same modification times.

You can also specify multiple source directories to sync, or use the --delete flag to delete files in the local destination directory that are not present in the remote source directory. For example:

rsync -avz --delete username@remote:/path/to/source1 /path/to/local/destination username@remote:/path/to/source2 /path/to/local/destination

This will sync both source1 and source2 from the remote server to the local destination directory, and will delete any files in the local destination directory that are not present in either of the remote source directories.

You can also use the --exclude and --include flags to exclude or include specific files or directories from the sync. For example:

rsync -avz --exclude='*.tmp' --include='*.txt' username@remote:/path/to/source /path/to/local/destination

This will sync all files and directories from the remote source directory to the local destination directory, but will exclude any files with the .tmp extension and will only include files with the .txt extension.

Summary

In summary, both rsync and scp are useful utilities for transferring files between servers, but rsync is generally more powerful and efficient due to its ability to only transfer the differences between files and its numerous options and features.

Related posts

Mastering the Linux ifconfig Command

Docker Exec Command With Practical Examples

Debugging with Git Bisect

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Read More