-a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于 -rlptgoD。
-v 详细模式输出。
--delete 删除 目标文件夹(dst) 中 源文件夹(src) 已经没有的文件。
--exclude='' 指定排除不需要传输的文件模式(注意!这里的根目录是 src 目录,里面的文件是相对路径)

预备: src 下有 a b c 3个文件, dst 为空文件夹

mkdir src
mkdir dst
cd src
touch a b c

1.-av 参数

rsync -av src/ dst/

同步完成后 dst 下有 a b c 3个文件

2.--delete 参数

rm src/b
rsync -av --delete src/ dst/

同步完成后 dst 下有 a c 2个文件,b文件删除

3.--exclude 参数

touch src/d src/e
rsync -av --delete --exclude='e' src/ dst/

同步完成后 dst 下有 a c d 3个文件,e文件被排除不进行同步

4.同步到远程(发布代码)

rsync -av --delete src/ vagrant@192.168.33.10:/home/vagrant/dst 

注意以下区别!

rsync -av src/ dst/ 同步src文件夹下的文件,结果为 dst/a、dst/b、dst/c (建议这种用法 --delete 和 --exclude="" 参数能更友好的配合)

rsync -av src dst/ 同步src文件夹本身,结果为 dst/src/a、dst/src/b、dst/src/c