Versions Compared

Key

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

...

object meaning
a b sync object (file or directory) a to (file or directory b)
a/ b sync contents of directory a to b
a b/ sync a to directory b
a/ b/ sync directory a/ to b/

Syncing to a Remote/Host

Until now we've just assumed that we are syncing files in the same directory. However, rsync will also sync files between directories. For example, if you have modified files in your home directory, you might want to make sure the changed files are in your personal directory in your lab folder. In this case you could run,

...

which creates or updates /share/FooLab/bar1234/ProjectFiles/a. You can reverse this off course. Finally, rsync allows either the source or the target

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,

tgt can be another local directory, or it can be prefixed with a hostname to indicate that you wish to transfer the files to that system. If you just use a hostname, then it's assumed that you are specifying that the files should be synced in to your home directory. Here are some examples,

target meaning
b rsync to file or directory named b
b/ rsync specifically to a directory named b (ie, fail if it is not one)
/a/b/c rsync to a directory located by a full path name
host:a/b/c rsync to remote host, and store files in the path a/b/c relative to the user's home directory
host:/a/b/c rsync to remote host, and store files in the absolute path /a/b/c

CCBB UNIX users note: Please do not sync files on a remote host. This allows you to sync files to a remote host, using the syntax

rsync -a a remote_host:dir

which places the object a in the directory dir on the the host remote_host. If dir is a full path, then that is where the syncing is done. If it not, then the syncing is done in ~/dir where ~ is the directory your are logged in to when you access the remote system using ssh. If you don't provide a directory at all, then ~/a is synced.

Other Options

Besides -a to set up mirroring, rsync comes with a number of other options. For example, you can use --verbose to see the list of files that are being transferred. Over time you may find that there are files that are being transferred that you don't care about. For example, you might be using rsync to copy the contents of your home directory over. In this case, you may notice files being synced over that you don't care about. For example, I notice that when I rsync my home directory, cache files created by pages created by firefox. In this case using

--exclude=.mozilla/firefox/eog3nqtx.default/Cache

ensures that these files files don't care copied over. You can use --exclude multiple times, and if you have enough of them, you can put them into a file; then, you can use --exclude=FILE to tell rysnc to use the named file as a list of patterns to exclude. You may also want to use --delete which tells rsync to remove deleted files in the target since by default it doesn't do this. Another way to avoid rsyncing lots of junk is to only rsync the things you are interested in. Then your list of ojbects can be used in --include-from=FILE, or --files-from=FILE where FILE is again the file name. The difference is that the include file used in include-from can have wildcards, as can the exclude file. For more information about wildcards, run

man rsync

and read about it. Also, --dry-run, --list-only, and --itemize-changes are good ways to see what rsync is doing, or to test what it might do. Finally, sometimes on remote systems

Rsync as a Backup Tool

This section will provide a mechanism for CCBB users to easily back their Mac or Linux laptops up. First, prep by logging into files.ccbb.utexas.edu using ssh, and then changing to your lab's bulk share. Please do not use home directories for this, as we do not have space to do this. Anybody that we have obligations to backup will also be a member of a lab with a lab share. Within your lab share you should have a personal folder which only you, and your lab head can access. Make a unique for your backup (say LAPTOP). Next on your system run the commands

mkdir ~/bin
mkidr ~/.ccbb-rsync-backup

Go into the directory ~/bin, and use an editor to create file called sync2files which contains the blocks of text between the -begin- and -end- lines below

– begin –

#!/bin/bash

– end –

Once the script is done, run the command

chmod u+x sync2files

Next go into ~/.ccbb-rsync-backup, and create a file called include, and a file called exclude. This can be empty, but over time you may want to adjust the contents of these files. For example, you may notice cache files in your home directory, or other files that you don't want backed up (such as your music collection which is non-work related). Those can be put in the exclude file. Or if you wish to only back up specific items, or need to back up items other than ~, you can add entries to the include file.