常用ssh同步文件
rsync -avz —delete /src/ hostB:/target/
建议使用:
rsync -azSP —delete /src/
hostB:/target/

-a 是一个选项集合会把文件的权限、时间等信息一起同步,等于-rlptgoD
-u 目标文件更新不复制
-v 详情
-z 压缩传送
-S 对稀疏进行处理,压缩存储,但和—inplace互斥
-P 断点续传

rsync会放大文件?会的,存储前是压缩的,由于分块传输,传过去后就放大了,可以加选项-S避免。具体原因参考连接
https://blog.csdn.net/weixin_33846508/article/details/116977933

如何想按最节省空间的方式,那么考虑如下:
—inplace原地更新目标文件
—partial保留部分传输的文件
—append附加数据到更短的文件
—progress在传输时显示进度条
rsync -av —partial —inplace —append —progress vmdk_file syncuser@host1:/destination

指定端口:
-e ‘ssh -p 2222’ :指定端口2222
rsync -avP -e ‘ssh -p 端口’ /etc/test.tar root@192.168.1.100:/opt/

最佳实践:

目录到目录:
rsync -az —delete /source/ /destination/

文件到文件
rsync -az —delete /source/a.txt /dest/a.txt

文件到目录
rsync -az —delete /source/a.txt /dest/

常见错误,源路径最后没有加/

假设源路径/data/a,目录下有一个文件b.txt
情况1:源加了/,目标a目录不存在
rsync -auz —delete /data/a/ xx@192.168.0.1:/data/a
结果:自动创建a目录,a目录下是文件b.txt

情况2:源加了/,目标a目录存在
rsync -auz —delete /data/a/ xx@192.168.0.1:/data/a
结果:a目录下是文件b.txt

情况3:源不加最后的/,目标a目录不存在
rsync -auz —delete /data/a xx@192.168.0.1:/data/a
结果:自动创建a目录,a目录下是a目录,/data/a/a下是文件b.txt

情况4:源不加最后的/,目标a目录存在
rsync -auz —delete /data/a xx@192.168.0.1:/data/a
结果:自动创建a/a目录,/data/a/a下是文件b.txt

结论:源路径最后加上/