Linux实现数据同步之rsync(基础笔记)

@努力的小王  December 15, 2017

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-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。


添加新评论