首页 > 代码库 > Rsync无差异同步原理和实现

Rsync无差异同步原理和实现

4、Rsync无差异同步原理和实现.md

无差异同步

  在生产环境中我们可能会遇到这样的状况,我们的客户端在服务端去拉取数据的时候,首先一点,对于拉取我们的服务端有的那么我们客户端肯定有。但是我们的客户端有的服务端就不一定是有的了。反之如果是推送的话,那么我们客户端有的我们的服务端那肯定是有的,但是我们的服务端有的我们的客户端不一定有。所以对于这种当服务端删除一条数据之后为了保障我们的客户端也能在下一次同步的时候进行删除的这种情况我们就需要采取无差异同步,保障数据的一致性。

实现方法

--delete    #实现无差异同步的方法,本地有远端就有,本地没有远端有也将删除。

    无差异同步,说起来很简单,但是真正操作起来,如果是误操作那么影响是特别大的,比如我们的服务端不小心删除了一个数据,而此时我们又进行了一次无差异同步,那么所有客户机上的数据也将逐渐被删除。所以我们一定需要理解无差异同步的真正原理

演示

示例:
1、先查看服务端的所有数据
[root@node1 data]# ls /data/
a  b  c  d  issue
2、先在客户端做一次全量数据同步
[root@node2 ~]# rsync -avz --password-file=/etc/rsync.passwd caichangen@192.168.1.71::cce /tmp/
receiving incremental file list
./
a
b
c
d
issue
sent 157 bytes  received 367 bytes  1048.00 bytes/sec
total size is 23  speedup is 0.04    
[root@node2 ~]# ls /tmp/
a  b  c  d  issue
3、模拟误操作,在我们的服务端删除一条数据。例如文件issue
[root@node1 data]# rm -f /data/issue 
4、进行一次无差异拉取同步
[root@node2 ~]# rsync -avz --delete --password-file=/etc/rsync.passwd caichangen@192.168.1.71::cce /tmp/
receiving incremental file list
deleting issue
./
sent 62 bytes  received 146 bytes  416.00 bytes/sec
total size is 0  speedup is 0.00
[root@node2 ~]# ls /tmp/ 
a  b  c  d
可以看到我们进行一次同步之后我们的客户端也将issue文件同时删除掉了

一种可能出现的更严重的情况,如果我们的客户端服务器将数据全部删除了,而在此时我们又做了一次推送,那么我们的服务端数据将全部删除。
示例:
1、先查看服务端的所有数据
[root@node1 data]# ls /data/
a  b  c  d  
2、先做一次全量同步,而后将我们客户端的数据全部删除
[root@node2 ~]# rsync -avz --password-file=/etc/rsync.passwd caichangen@192.168.1.71::cce /tmp/
receiving incremental file list
./
a
b
c
d
sent 138 bytes  received 290 bytes  285.33 bytes/sec
total size is 0  speedup is 0.00
[root@node2 ~]# rm -rf /tmp/*
3、然后做一次无差异推送
[root@node2 ~]# rsync -avz --delete --password-file=/etc/rsync.passwd /tmp/ caichangen@192.168.1.71::cce
sending incremental file list
./
deleting d
deleting c
deleting b
deleting a
sent 31 bytes  received 11 bytes  84.00 bytes/sec
total size is 0  speedup is 0.00
此时我们可以看到我们服务端的数据已经全部被干掉了

rsync的参考资料

http://rsync.samba.org
man rsync
man rsyncd.conf
http://www.samba.org/ftp/rsync/rsync.html
http://www.samba.org/ftp/rsync/rsync.conf.html

本文出自 “Char” 博客,请务必保留此出处http://charcce.blog.51cto.com/4255555/1930374

Rsync无差异同步原理和实现