在生产环境中我们可能会遇到这样的状况,我们的客户端在服务端去拉取数据的时候,首先一点,对于拉取我们的服务端有的那么我们客户端肯定有。但是我们的客户端有的服务端就不一定是有的了。反之如果是推送的话,那么我们客户端有的我们的服务端那肯定是有的,但是我们的服务端有的我们的客户端不一定有。所以对于这种当服务端删除一条数据之后为了保障我们的客户端也能在下一次同步的时候进行删除的这种情况我们就需要采取无差异同步,保障数据的一致性。
--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 此时我们可以看到我们服务端的数据已经全部被干掉了
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
原文地址:http://charcce.blog.51cto.com/4255555/1930374