仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 464|回复: 9
打印 上一主题 下一主题

[CentOS(社区)] 来一发rsync+inotify完成办事器之间文件及时同步

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:07:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小知识:如果说Ubuntu是现今最受桌面用户欢迎的Linux操作系统,那么CentOS就是最受公司、企业、IDC喜爱的Linux发行版了。
之前做了“ssh信赖与scp主动传输剧本”的技巧文档,此计划是作为公司里备份的办法,但在现实的运转中,因为主办事器在给备份办事器传输的时刻,我们的主办事器须要备份的文件是及时、一直的发生的,形成不晓得主办事器给备份办事器传输了若干文件,磁盘空间就那末年夜,做备份的缘由:一个是为了坚持文件,别的一个是处理主办事器的磁盘丰满成绩,但因为不晓得备份办事器究竟吸收了若干文件,所以主办事器里的文件不敢删除(假如没有备份的情形下删除,成绩就严重了,我这个是当局的项目,办事器里的文件都是主要的,删错了就走人~~~~(>_<)~~~~),所以我就采取了rsync+inotify的方法来及时同时办事器之间的文件,并且传输的进程是加密的,比scp平安多了(即便scp采取ssh信赖,用密钥,也不是满有把握的)。
  以下是我给公司运维做的备份技巧文档,分享给人人,愿望对人人有赞助。
  先引见一下rsync与inotify,都在在网上找的材料。先声明上面的rsync与inotify引见不是我本身写的。
1、rsync
  与传统的cp、tar备份方法比拟,rsync具有平安性高、备份敏捷、支撑增量备份等长处,经由过程rsync可以处理对及时性请求不高的数据备份需求,例如按期的备份文件办事器数据到远端办事器,对当地磁盘按期做数据镜像等。
  跟着运用体系范围的赓续扩展,对数据的平安性和靠得住性也提出的更好的请求,rsync在高端营业体系中也逐步裸露出了许多缺乏,起首,rsync同步数据时,须要扫描一切文件落后行比对,停止差量传输。假如文件数目到达了百万乃至万万量级,扫描一切文件将长短常耗时的。并且正在产生变更的常常是个中很少的一部门,这长短常低效的方法。其次,rsync不克不及及时的去监测、同步数据,固然它可以经由过程linux守护过程的方法停止触发同步,然则两次触动员作必定会有时光差,如许就招致了办事端和客户端数据能够涌现纷歧致,没法在运用毛病时完整的恢单数据。基于以上缘由,rsync+inotify组合涌现了!

2、inotify
  Inotify是一种壮大的、细粒度的、异步的文件体系事宜监控机制,linux内核从2.6.13起,参加了Inotify支撑,经由过程Inotify可以监控文件体系中添加、删除,修正、挪动等各类纤细事宜,应用这个内核接口,第三方软件就能够监控文件体系下文件的各类变更情形,而inotify-tools就是如许的一个第三方软件。
  在下面章节中,我们讲到,rsync可以完成触发式的文件同步,然则经由过程crontab守护过程方法停止触发,同步的数据和现实数据会有差别,而inotify可以监控文件体系的各类变更,当文件有任何更改时,就触发rsync同步,如许恰好处理了同步数据的及时性成绩。

  详细人人可以参照http://www.ckuyun.com/developerworks/cn/linux/l-ubuntu-inotify/index.html来停止进修。

  接上面我们来开端停止rsync与inotify的装置、设置装备摆设、测试。
  上面是2个办事器的构造,分离为主机名、ip、状况、内核、位数、同步的目次,并将2台办事器均是redhat5.4刊行版本。
1、主办事器(server端,我这里是nginx)
个中主办事器须要装置rsync与inotify,主办事器作为server,向备份办事器client传输文件
1、装置rsync
  1. [root@nginx~]#cd/usr/src/[root@nginxsrc]#lltotal16drwxr-xr-x2rootroot4096Jan262010debugdrwxr-xr-x2rootroot4096Jan262010kernels[root@nginxsrc]#wgethttp://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz[root@nginxsrc]#tarzxvfrsync-3.0.9.tar.gz[root@nginxsrc]#cdrsync-3.0.9[root@nginxrsync-3.0.9]#./configure--prefix=/usr/local/rsync[root@nginxrsync-3.0.9]#make[root@nginxrsync-3.0.9]#makeinstall
复制代码
2.树立暗码认证文件
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd
复制代码
个中rsync-pwd可以本身设置暗码,rsync.passwd名字也能够本身设置
  1. [root@nginxrsync]#chmod600rsync.passwd
复制代码
不管是为了平安,照样为了不涌现以下毛病,暗码文件都须要给600权限
  1. passwordfilemustnotbeother-accessiblecontinuingwithoutpasswordfile
复制代码
3、装置inotify
  1. [root@nginxrsync]#cd/usr/src/[root@nginxsrc]#wgethttp://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz[root@nginxsrc]#tarzxvfinotify-tools-3.14.tar.gz[root@nginxsrc]#cdinotify-tools-3.14[root@nginxinotify-tools-3.14]#./configure--prefix=/usr/local/inotify[root@nginxinotify-tools-3.14]#make[root@nginxinotify-tools-3.14]#makeinstall
复制代码


4、创立rsync复制剧本
  此项功效重要是将server真个目次/tmp里的内容,假如修正了(不管是添加、修正、删除文件)可以或许经由过程inotify监控到,并经由过程rsync及时的同步给client的/tmp里,上面是经由过程shell剧本完成的。
  1. #!/bin/bashhost=192.168.10.221src=/tmp/des=webuser=webuser/usr/local/inotify/bin/inotifywait-mrq--timefmt%d/%m/%y%H:%M--format%T%w%f%e-emodify,delete,create,attrib$src|whilereadfilesdo/usr/bin/rsync-vzrtopg--delete--progress--password-file=/usr/local/rsync/rsync.passwd$src$user@$host::$desecho"${files}wasrsynced">>/tmp/rsync.log2>&1done
复制代码


  留意:经由1楼的提醒,我发明假如把rsync.log的放到tmp(备份的目次)或发送一向复制的成绩,所以建议列位吧rsync的日记放到其他的目次下(非备份目次)。
  个中host是client的ip,src是server端要及时监控的目次,des是认证的模块名,须要与client分歧,user是树立暗码文件里的认证用户。
  把这个剧本定名为rsync.sh,放到监控的目次里,好比我的就放到/tmp上面,并赐与764权限
  1. [root@nginxtmp]#chmod764rsync.sh
复制代码
  然后运转这个剧本
  1. [root@nginxtmp]#sh/tmp/rsync.sh&
复制代码
  请记住,只要在备份办事器client真个rsync装置并启动rsync以后,在启动rsync.sh剧本,不然有时刻会满屏涌现:
  1. rsync:failedtoconnectto192.168.10.221:Connectionrefused(111)rsyncerror:errorinsocketIO(code10)atclientserver.c(107)[sender=2.6.8]
复制代码
  我们还可以把rsync.sh剧本参加到开机启动项里
  1. [root@nginxtmp]#echo"/tmp/rsync.sh">>/etc/rc.local
复制代码
2、备份办事器(client,我这里为nginx-backup)

1、装置rsync(备份办事器只装置rsync)
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd0
复制代码

2、树立用户与暗码认证文件
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd1
复制代码

请记住,在server端树立的暗码文件,只要暗码,没有效户名;而在备份办事端client里树立的暗码文件,用户名与暗码都有。
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd2
复制代码
  须要给暗码文件600权限
3、树立rsync设置装备摆设文件
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd3
复制代码

  个中web是server办事端里的认证模块称号,须要与主办事器里的分歧,以上的设置装备摆设我的本身办事器里的设置装备摆设,以供参考。
把设置装备摆设文件定名为rsync.conf,放到/usr/local/rsync/目次里
  启动rsync
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd4
复制代码

  假如涌现以下成绩:
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd5
复制代码

  可以采取上面办法处理
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd6
复制代码

  找到所需模块地点的目次,然后把此目次添加到/etc/ld.so.conf里,并更新库文件
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd7
复制代码

  我们可以把rsync剧本参加到开机启动项里
  1. [root@nginxrsync-3.0.9]#cd/usr/local/rsync/[root@nginxrsync]#echo"rsync-pwd">/usr/local/rsync/rsync.passwd8
复制代码

  如今rsync与inotify在server端装置完成,rsync在备份办事器client端也装置完成
  上面是server真个tmp文件情形

  上面是client端tmp的文件情形


  接上去我们来做一下测试,在server里创立个test-rsync文件,看看client能否能收到


  在看client端能否有test-rsync文件,同时client真个tmp目次文件能否与server真个文件完整分歧


  可以看到在client端,曾经收到了test-rsync文件,并且client的tmp里的文件与server里tmp的文件完整雷同、文件数量分歧。
  如今rsync与inotify的搭建与设置装备摆设完成了,并完成了办事器直接数据的及时同步;人人可以依据本身的须要来停止响应的设置装备摆设。
  BTW:在rsync+inotify这类备份办法的时刻,我公司碰到了一个成绩,那就是主办事曾经给备用办事同步完数据了,但主办事器磁盘看见满了,须要把曾经备份的文件删除,但同时在备份办事器里保存主办事器里的文件,也就是说主办事器里删除文件的时刻,备份办事器里不随着删除文件,我检查了许多英文文档,测试了许多遍,最初找到了一个处理办法,那就是在主办事器里,把rsync.sh这个剧本里第9行的--delete参数给去失落,就能够处理这个成绩。

小知识:CentOS已正式加入红帽公司。从事互联网技术的同学,CentOS应该是值得你深入了解学习研究的。
透明 该用户已被删除
沙发
发表于 2015-1-17 05:48:44 | 只看该作者
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
活着的死人 该用户已被删除
板凳
发表于 2015-1-23 12:53:53 | 只看该作者
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
谁可相欹 该用户已被删除
地板
发表于 2015-1-31 18:52:58 | 只看该作者
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
若相依 该用户已被删除
5#
发表于 2015-2-7 00:55:18 | 只看该作者
应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
海妖 该用户已被删除
6#
发表于 2015-2-19 12:44:11 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-6 15:26:19 | 只看该作者
其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-13 04:09:46 | 只看该作者
熟读写基础知识,学得会不如学得牢。
飘灵儿 该用户已被删除
9#
发表于 2015-3-13 04:09:47 | 只看该作者
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
admin 该用户已被删除
10#
发表于 2015-3-20 12:44:21 | 只看该作者
我感觉linux的学习,学习编程~!~!就去学习C语言编程!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 08:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表