详解linux同步工具rsync---参数说明和实例演示
概述
续一下前面讲的rsync基础内容,今天主要介绍一下rsync的相关参数和用一些实例做一下演示。
参数说明
下面是rsync常见的一些选项说明
rsync的选项非常多,能够实现非常具有弹性的功能,以上选项仅仅只是很小一部分常用的选项
虽然选项非常多,但最常用的选项组合是"avz",即压缩和显示部分信息,并以归档模式传输。
实例演示
以下是几个本地同步示例和通过远程shell实现的同步示例。
1、将/etc/fstab拷贝到/tmp目录下。
# rsync /etc/fstab /tmp
2、将/etc/cron.d目录拷贝到/tmp下。
# rsync -r /etc/cron.d /tmp
该命令会在目标主机上创建/tmp/cron.d目录,并将/etc/cron.d/中的文件放入到/tmp/cron.d/目录中,也就是说默认情况下,是不会在目录路径下创建上层目录/etc的。
3、将/etc/cron.d目录拷贝到/tmp下,但要求在/tmp下也生成etc子目录。
# rsync -R -r /etc/cron.d /tmp
其中"-R"选项表示使用相对路径,此相对路径是以目标目录为根的。
4、指定ssh连接参数,如端口、连接的用户、ssh选项等。
[root@nwppdb tmp]# rsync -e "ssh -p 22 -o StrictHostKeyChecking=no" /etc/fstab 39.108.76.234:/tmp
可见直接指定ssh参数是生效的。
5、"--existing"和"--ignore-existing"
"--existing"是只更新目标端已存在的文件
"--ignore-existing"是更新目标端不存在的文件
"--existing"和"--ignore-existing"结合使用时,有个特殊功效,当它们结合"--delete"使用的时候,文件不会传输,但会删除receiver端额外多出的文件。
准备测试环境
cd /tmp mkdir a b touch a/{1..4}.txt touch b/a.log
[root@nwppdb tmp]# rsync -nrv --delete a/ b/ sending incremental file list deleting a.log 1.txt 2.txt 3.txt 4.txt sent 80 bytes received 24 bytes 208.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN) [root@nwppdb tmp]# rsync -nrv --existing --ignore-existing --delete a/ b/ sending incremental file list deleting a.log sent 68 bytes received 12 bytes 160.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
实际上,"--existing"和"--ingore-existing"是传输规则,只会影响receiver要求让sender传输的文件列表,在receiver决定哪些文件需要传输之前的过程,是这两个选项无法掌控的,所以各种规则、"--delete"等操作都不会被这两个选项影响。
6、"--remove-source-files"删除源端文件。
使用该选项后,源端已经更新成功的文件都会被删除,源端所有未传输或未传输成功的文件都不会被移除。未传输成功的原因有多种,如exclude排除了,"quick check"未选项该文件,传输中断等等。
总之,显示在"rsync -v"被传输列表中的文件都会被移除。如下:
rsync -r -v --remove-source-files /tmp/a/oswbb /tmp/a/audit /tmp
上述显示出来的文件在源端全部被删除。
篇幅有限,关于rsync的一些参数就介绍到这了,如果大家对rsync感兴趣的话建议多去做练习,毕竟参数还是蛮多的。
后面会分享更多devops和DBA方面的干货,感兴趣的朋友可以关注一下~