rsync增量传输

1、第一次同步时,rsync会复制全部内容,但在下一次只传输修过的文件

2、需要使用rsync传输数据的主机都需要安装rsync软件
[root@qll251 ~]# yum -y install xinetd rsync

3、以守护进程方式启动rsync;查看rsync进程所使用的端口:
[root@qll251 ~]# netstat -antup |grep rsync #由于此时未启动rsync,因此不会有任何回显
[root@qll251 ~]# rsync --daemon #守护进程是指在后台运行不受终端控制的进程。
[root@qll251 ~]# netstat -antup |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4176/rsync
tcp6 0 0 :::873 :: LISTEN 4176/rsync
[root@qll251 ~]#

4、rsync服务器端向客户端推数据
语法: rsync -avz 本机路径 远端用户@远端IP:/远端目标路径
[root@qll251 ~]# rsync -avz /rsync/ [email protected]:/shares
想明白为什么rsync客户端也需要创建rsync_user用户了吗?因为服务器通过该用户去访问客户端呀

5、客户端向服务器端拉取数据(pull)
语法: rsync -avz 服务器端用户名@服务器端IP:/共享路径 /本地路径
[root@qll252 ~]# rsync -avz [email protected]:/rsync /shares

6、rsync同步过程中由两部分模式组成:决定哪些文件需要同步的检查模式以及文件同步时的同步模式。

(1).检查模式是指按照指定规则来检查哪些文件需要被同步,例如哪些文件是明确被排除不传输的。默认情况下,rsync使用"quick check"算法快速检查源文件和目标文件的大小、mtime(修改时间)是否一致,如果不一致则需要传输。当然,也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如"–size-only"选项表示"quick check"将仅检查文件大小不同的文件作为待传输文件。rsync支持非常多的选项,其中检查模式的自定义性是非常有弹性的。

(2).同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外工作。例如上文所说的是否要先删除源主机上没有但目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外操作。rsync也提供非常多的选项使得同步模式变得更具弹性。

相对来说,为rsync手动指定同步模式的选项更常见一些,只有在有特殊需求时才指定检查模式,因为大多数检查模式选项都可能会影响rsync的性能。
7、使用rsync一定要注意的一点是,源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身
[root@xuexi ~]# rsync -a /etc /tmp
[root@xuexi ~]# rsync -a /etc/ /tmp
第一个命令会在/tmp目录下创建etc目录,而第二个命令不会在/tmp目录下创建etc目录,源路径/etc/中的所有文件都直接放在/tmp目录下。(rsync目标路径没有目录,会自动创建)
8、https://www.cnblogs.com/f-ck-need-u/p/7220753.html
希望博主不要设置权限或者删除,很全面,感恩
9、
我设置的
jenkins构建 :
rsync增量传输_第1张图片

我们从svn仓库提交更新后,jenkins会自动识别到,拉取更新的代码到master机器,
在这里插入图片描述

rsync增量传输_第2张图片

到master机器后,按照这个策略把master机器下目录文件,推送到slave机器,这个是增量的 ,
rsync增量传输_第3张图片
最后我的测试实现实现是:
①:过滤.svn目录(svn的版本控制信息)②:master机器文件修改、增加,slave机器也进行相应修改/增加 ③:slave机器修改文件等,不影响master机器,master机器并不会覆盖掉slave机器的内容 ④:svn_win机提交更新,master,slave都会更新,如果master及salve有同样文件且在本地修改过,会更新,但是会在文件中显示冲突 ⑤:master不存在的文件,slave存在的文件,把slave的文件删除)

鸡肋点:我不可以在master修改提交到svn,否则会jenkins构建失败;我在slave使用了文件,本地机提交后,重新构建,master机器文件变了。但是不会覆盖掉同名slave机器文件,我只能删除slave机器文件后,在构建,有了,最逊的第二条,按新增的传给slave
我似乎能猜到原因,但我不知道如何改变这个窘境,只能每次删除后,再拉新代码,评论有没有大佬,可以帮帮我,我看了详细的文档,也没总结出更好的方法,我只想达到增量传输的目的,尽可能在svn文件越来越庞大的情况下,尽快的,达到同步文件到,master机器和slave机器的目的

你可能感兴趣的:(upupup,服务器,网络,linux)