暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux 深度讲解Rsync服务(排除、无差异同步技术..和排错思想)

爱婷如命一生一世 2017-08-14
707

新的一周,新的开始,坐在工位,趁着没有忙,赶紧整理一下技术笔记,今天分享的是深入分析rsync的一些知识点:

既然是深度讲解Rsync,我就先聊聊rsync的排除,依旧还是这张拓扑:

在说排除打包的是知识点之前,我先对之前的rsync服务补充以一些:

当我们系统启动时,看看rsync启动没有?

很明显,看的出rsync服务是没有启动的!

所以,我要在这里启动以进程方式启动rsync服务:

再次查看rsync就是成功启动起来了。

但是这样做虽然解决了目前的问题,但是一旦系统重启之后,就有需要到这一步手动启动!

所以,我要把rsync放在rc.local里面去!

看下此命令的全路径,原因在于服务一旦放在rc.local里面中,必须使用全路径!所以我要查看这一步:


我第一种办法用vi编辑:

当然,也可以用追加的办法来做,这样的好处在于写命令全路径时不容易出错!(推荐用)

弄完之后,记得要查看核实。

然后就可以用客户端进行推送和拉取操作了。

在这里,我依靠了历史命令中的一个快捷功能:

查看历史命令,然后根据历史命令的序号执行,

这里我用的是从服务端进行的拉取动作!


我再来解释下rsync配置文件中“模块”的意思:





步入正题:

rsync的排除:用man 来了解下rsync:

在下面搜索 /excude


Rsync的排除有两方面:

  1. 客户端通过命令来进行排除某些内容。(很灵活)

  2. 服务端通过配置参数进行排除某些内容。(不推荐)






我先演示下在客户端上通过命令来进行排除:

我将演示在客户端上推送给服务端除了rsync-test之外的文件。

为了保证实验准确性,我先将服务端准备在客户端推送的文件路径上的文件删除掉!


在这次试验中,我遇到了以下问题:(权限问题,根据错误提示去翻译,去定位!)

经过认真排查,我发现是服务端的share文件的权限出现了问题!而且还要注意子目录的文件是不是有权限!还可以利用日志的输出去观察:

解决办法:

所以说以整体部署为思路 ,虽然排错很辛苦,但是一旦解决就超级有成就感!


言归正传:我将演示在客户端上推送给服务端除了rsync-test之外的文件:

一般推荐是在客户端上进行排除操作,这样会比较灵活,如果在服务端上做排除每次都需要更改,有一些麻烦。

在服务端进行核实,是不是排除:已经排除!


那么,在实际生产中如果要排除多个文件的时候,就需要稍微改动下:

命令格式如下:(排除多个文件用{}和,隔开。如果是名字连续文件,可以用..连续。) rsync -avz --exclude={rsync-test1.txt,rsync-test2.txt} /fengxin/  rsync_backup@192.168.8.188::share
Password:

我的需求是排除-test1 -test2.

服务端进行核实:确实是指传送了test.txt这一个文件。



rsync的排除就简单介绍到这



无差异同步。

无差异同步能解决什么呢?之前,我在客户端上操作推送或者拉取动作时:

在普通同步时是存在差异的。

在实际生产工作中,会用到无差异同步的,以防删除的文件在某一个时刻利用备份机制恢复。


无差异同步其实也很简单:就是一个简单的参数,但是其涉及到的风险面还是挺广的,因为这一删除连备份都没有啦!

其中,无差异备份也是分为push和Pull的应用场景

push:备份

pull:代码发布,下载。


push:

数据流方向是从客户端到服务端。(站在客户端上来说)

主要用作备份!

还是在客户端上进行操作!

我举一个例子:假设我客户端的当前要推送给服务端的目录被黑客攻入,删除了全部的文件

在没有做无差异备份的时候,服务端的文件是完好的:


客户端做无差异备份的参数(我在客户端推送当前空的目录给服务端。):命令格式如下  :

我可以清楚的看见图中提示:deleting的提示!

回到服务端:看下共享目录下的文件:备份的文件就没有了。

因此:可以证明,在客户端推送无差异备份,一旦本地丢失了,就连备份服务器内文件也会丢失!

因此,在做这个操作时,一定要知道此命令背后涉及到影响:

-- delete风险在于:

本地存在什么,远端就有什么!

本地没有的,远端的有也要删除,所造成的影响就是服务器端的目录数据可能丢失!


pull:

数据流的方向是从服务端到客户端(站在客户端上来说)

代码发布,下载!

-- delete风险在于:

远端有什么,本地就有什么,远端没有的,本地有的也要删除,所造成的影响本地目录文件丢失!


我来演示下:

服务端已经没有什么文件了!

站在客户端上做pull拉取动作!原来客户端是有文件的!现在变成已有的文件消失了。


因此总结出无差异同步的生产场景:

一般是有需要两台服务器之间,必须要求数据一致!且实时性又不是很高的情况下,例如架构中的两台负载均衡的web服务器之间的同步。






下面要对rsync 排错这一块做下总结分析:(在企业实际生产运维上也很重要,快速的定位故障点是排错能力高低的体现!)

排错的前提一定是:

1.部署流程熟悉。(一般要主要要共享的文件的权限,目录是否存在,防火墙是否关闭,等常见错误。)

2.原理理解。

3.根据日志的输出来分析。


在运维工作中,除了RSYNC这个软件做同步外,还可以用union做双向同步,的,drdb用作实时的大数据量的同步,属于底层的文件系统,效率更高!

数据库有自身的同步工具,例如musql 有repliacation !而oracle dataguard (物理和逻辑两个方面)。






















文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论