rsync介绍 rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输 rsync的工作模式 rsync有四种工作模式分为: 1、shell模式,也称作本地模式 2、远程shell模式,此时可以利用ssh协议承载其数据传输过程 3、列表模式,其工作方式与ls相似,仅列出源的内容:-nv 4、服务器模式,此时,rsync可以工作在守护进程,能够接收客户端的数据请求;在使用时,可以在客户端使用rsync命令把文件发送到守护进程,也可以像服务器请求获取文件 rsync命令选项 -n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试 -v:详细输出模式,--verbose -q:--quiet,静默模式 -c:--checksum,开启校验功能,强行对文件传输进行校验 -r:--recursive,递归复制 -a: --archives.归档,保留文件的原有属性相当于rlptgoD的选项组合![1610172125243013.png](http://www.xwblog.club/usr/uploads/2017/12/1339947748.png)-p:--perms 保留文件的权限 -t: --times 保留文件的时间戳 -l:--links 保留文件的符号链接 -g:--group保留文件的属组 -o:--owner 保留文件的属主 -D:--devices 保留设备文件 -e ssh:表示使用ssh协议作为继承 -z:对文件压缩后传输 --progress:显示进度条 根据同步的方向不同,分为推、拉两种方式,其命令用法以后文章中详讲 此处需要注意的地方有两点: 1、如果使用命令时只指定源而不指定目标,仅会将源以列表的形式显示而不同步 2、rsync命令使用中,如果源参数的末尾有斜线,只会复制指定目录的内容,而不复制目录本身,没有斜线,则会复制目录本身,包括目录 3.Rsync+sersync架构 * sersync是基于Inotify开发的,类似于Inotify-tools的工具 * sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。 *******Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别********* 1、Rsync+Inotify-tools (1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来; (2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。 2、Rsync+sersync (1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字; (2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。 此段总结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。