Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Rsync is a data transfer tool. To use rsync you will be provide it with a target, and a destination. For each file in the target, rsync will first look to see if the file exists in the target. If not, then rsync will transfer a copy of the file to the target. If file does exist on the target, then rsync confirms that the files are the same. If not, then it determines the smallest amount of data that needs to be transferred to make the target file look like the source file. This makes rsync ideal for mirroring sets of files. Because rsync ignores files that are up to date it's also useful for resuming a transfer that might have gotten interrupted. However, this powerful piece of software can easily be used to create a mess, so if you wish to use rsync you should carefully read through this document to make sure you understand its proper use. It does also require a bit more familiarity with how files are stored, and accessed in UNIX. If you are still not comfortable with this, you should visit our New Users Guide which has some references for learning to work with UNIX. You might also refer to our UNIXary which defines some commonly used terms.

UNIX users (and Mac by use of Terminal.app) can use rsync by typing

Code Block
rsync -aopts other_opts src tgt

src and tgt are the locations that you want to keep synced. The rule is that tgt will be made to look like src. There are several options. First, you can just use short names. For example,

rsync a b

will sync object a to object b where both a and b are in your current working directory. By object, it is meant either file or directory. For example,

rsync a b

will sync a to b. If a, and b are both files, then b is update to look like a. If b is a directory, then b/a is updated to look like a. Keep in mind that "update" means "created" if it doesn't exist. If a is a directory, then rsync will fail because, by default, rsync will not transfer directories. You can get around this by using the -a option. In other words,

rsync -a a b

will transfer the directory a to become b. Typically, you will almost always be using -a, since it sets a number of other options which are used to help rsync mirror sets of files between two locations. With this use of rsync b/a is created or updated. If you use a/ as a source, then the contents of a are placed in b.

src could be either a file, or a directory. If it is a file, then the file is simply synced over to the target. If, src is a directory, then it is still synced over in the obvious way and tgt/src is created. Note that in this case, all of the files that are contained in src, or in its sub directories are copied over (ie, the entire file tree rooted at src is copied over). This makes sense if you think that it has synced src, and it just happens that this case. You can also use src/ in which the files, or directories inside of src (the contents) are synced over into target. Here are some examples,

...