|< Day Day Up >|
Recipe 16.2. Using rsync for Local File Transfers and Synchronization
You need to keep file trees synchronized on your workstation because your workstation is a staging ground for web directories, image galleries, source code trees, or other complex collections of files. So you use a working directory for editing files, and then copy the finished files to a separate upload directory. You would like something faster and more intelligent than cp, because cp takes a long time and you lose track of what needs to be copied.
Use rsync to keep file trees synchronized. rsync copies only changes, so it speeds up file copying, and it tracks changes inside files and in file trees.
Be sure you have the latest version, to get all the bugfixes and security patches. You definitely want 2.6 or later:
$ rsync —version rsync version 2.6.2 protocol version 26 ...
This command copies a directory of web files to a staging directory that will later be uploaded to the web server:
$ rsync -av —stats /home/pearlbear/webs ~/web_upload building file list ... done ...<all the files being copied fly by>... Number of files: 254 Number of files transferred: 235 Total file size: 8923014 bytes Total transferred file size: 8923014 bytes Literal data: 8923014 bytes Matched data: 0 bytes File list size: 6490 Total bytes written: 8939848 Total bytes read: 3780
To verify the transfer, use:
$ ls ~/web_upload webs
If more files are added to /home/pearlbear/webs, or any existing files are changed, simply re-run the same command. rsync will transfer only the changes.
You can specify more than one source directory to be copied:
$ rsync -av /home/pearlbear/webs /home/pearlbear/web_images ~/web_upload
You can also test your rsync command first with the —dry-run option:
$ rsync -av —dry-run /home/pearlbear/webs /home/pearlbear/web_images ~/web_upload
$ rsync -av —delete /home/pearlbear/webs ~/web_upload
The -av flags mean archive, which retains file permissions and ownership, and verbose output.
Be careful using the —delete flag; if you accidentally delete from the rsync archive a file that you wanted to keep, it's gone for good. Be especially careful with your filepaths, because —delete will happily erase an entire directory or file tree.
rsync is a great tool for keeping local archives synchronized. When you're authoring web pages, writing code, assembling files to burn to CD, or managing any kind of large collection of files, it's a real timesaver to have rsync track and synchronize all the changes.
Installation is simple—both RPMs and Debian packages are named rsync, and you only need the single package. The sources are statically linked, so there is no danger of dependency problems, however you elect to install it.
16.2.4 See Also
|< Day Day Up >|