====== rsync ======
* [[Filename Exclusions]]
* [[rsyncd]]
** rsync and slashes **
Rsync will do things differently based on how you add a slash to the source.
Let's say you have two directories: ''src'' and ''dest'', and that ''src'' has a file named ''document.txt'' in it.
You have two options: Use rsync to copy the entire folder of src **with** its contents, or copy the contents **alone** without the folder.
Here's how each would look:
Copy the entire directory:
rsync -r src dest
ls dest/src/document.txt
Copy the contents of the directory:
rsync -r src/ dest
ls dest/document.txt
Use the second example if you want to copy all files, **including** dot files in the directory.
If you want to ignore the dotfiles, then use an ''*'' to exclude those:
touch src/.dotfile.txt
rsync -r src/* dest
**Copy files to keep them as close to the original as possible**
rsync --archive --times foo:src/bar /data/tmp
**Add some options for large transfers**
Keep a log of transfers
rsync --log-file=/tmp/rsync.log
== Display progress ==
rsync --progress
== Compress as copying files ==
rsync --compress
== Exclude files ==
rsync --exclude 'foo-bar*'
== Exclude files and delete them on the destination ==
rsync --exclude 'foo-bar*' --delete-excluded
== Specify rsync path ==
When using SSH to connect to a remote server, it will drop the PATH to ''/bin:/usr/bin'' by default. If rsync is not in that path, set the path manually:
rsync --rsync-path=/usr/local/bin/rsync