




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】rsync+inotify实时备份
rsync+inotify实时备份为什么要使用inotify?远程同步方式,我们一般采用rsync命令、或者守护进程的方式。优点:具有安全性高、备份迅速、支持增量备份。缺点:1、rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。2、rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,实际是异步同步,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,当文件有任何变动时,就触发rsync同步,解决了同步数据的实时性问题。意思:inotify可以支持一对一、一对多的实时同步,支持单机实时备份、灾难切换,也可以实现在负载均衡LB下同时更新、上线多台RS服务器或者保持数据一致性。实时同步实例:同步顺序:青岛监控机38(监控主机)——>39(监控备机)Web1:38(rsyncclient,inotify)Web2:39(rsyncserver)同步的目录是/usr/local/nagios/etc,实现监控备机配置文件与主机实时同步。1.先使用rpm–qa命令查看系统中是否已经安装了rsync软件包,如果有我们可以不用进行安装,如果没有我们可以挂载上CentOS的系统光盘进行安装(当然,我们也可以选择使用源码包编译安装)[root@232-239-qd-monitor~]#rpm-qa|greprsyncrsync-3.0.6-9.el6_4.1.x86_64[root@232-239-qd-monitor~]#2.
Rsync安装好之后没自己的配置文件,创建rsync的配置文件[root@232-239-qd-monitortmp]#cat/etc/rsyncd.conf##rsyncd.confstart##uid=rootgid=rootusechroot=nomaxconnections=200
##最大连接数timeout=300
##超时时间pidfile=/var/run/rsyncd.pidlockfile=/var/run/rsync.locklogfile=/var/log/rsyncd.logignoreerrorsreadonly=false
##只读为假,可以上传list=falsehostsallow=/24
##允许网段hostsdeny=/32authusers=rsync_backup
##用户secretsfile=/etc/rsync.password
##密码文件[nagios]
##模块path=/usr/local/nagios/etc
##模块目录[wangxu]path=/tmp#rsync_config_______________end3.建立rsync用户名和密码文件[root@232-238-qd-monitor~]#
echo"rsync_backup:monitor">>
/etc/rsync.password4.为/etc/rsync.password授权为600(这个文件的权限必须是600)[root@232-238-qd-monitor~]#chmod-R600/etc/rsync.password1.设置rsync客户端的密码文件,客户端只需要设置rsync同步的密码即可,不用设置用户名[root@232-239-qd-monitor~]#echo"monitor">>
/etc/rsync.password4.
为/etc/rsync.password授权为600(这个文件的权限必须是600)[root@232-239-qd-monitor~]#chmod-R600/etc/rsync.password[root@232-239-qd-monitortmp]#rsync--daemon
####启动[root@232-239-qd-monitortmp]#netstat-lntp|greprsynctcp
0
0:873
:*
LISTEN
36834/rsync
tcp
0
0:::873
:::*
LISTEN
36834/rsync
[root@232-239-qd-monitortmp]#[root@232-239-qd-monitortmp]#pwd/tmp[root@232-239-qd-monitortmp]#ls77_mongodb_cacti_stats.txt
22_mongodb_cacti_stats.txt
25_mongodb_cacti_stats.txt
sms.log86_mongodb_cacti_stats.txt
24_mongodb_cacti_stats.txt
26_mongodb_cacti_stats.txt[root@232-239-qd-monitortmp]#——————————————————————————————————————————————————[root@232-238-qd-monitortmp]#pwd/tmp[root@232-238-qd-monitortmp]#rsync-avz
rsync_backup@39::wangxu//tmp/--password-file=/etc/rsync.password
####同步receivingincrementalfilelist./77_mongodb_cacti_stats.txt86_mongodb_cacti_stats.txt22_mongodb_cacti_stats.txt24_mongodb_cacti_stats.txt25_mongodb_cacti_stats.txt26_mongodb_cacti_stats.txt
sent220bytes
received12073bytes
24586.00bytes/sectotalsizeis170894
speedupis13.90[root@232-238-qd-monitortmp]#ls77_mongodb_cacti_stats.txt
22_mongodb_cacti_stats.txt
25_mongodb_cacti_stats.txt
86_mongodb_cacti_stats.txt
24_mongodb_cacti_stats.txt
26_mongodb_cacti_stats.txt
[root@232-238-qd-monitortmp]#本地为空,远端目录直接清空。有使远端rsync服务端丢数据的风险。[root@232-238-qd-monitortmp]#ls[root@232-238-qd-monitortmp]#rsync-avz--delete/tmp/rsync_backup@39::wangxu/
--password-file=/etc/rsync.passwordsendingincrementalfilelist./deletingsms.logdeletingmonitor_bak.shdeleting26_mongodb_cacti_stats.txtdeleting25_mongodb_cacti_stats.txtdeleting24_mongodb_cacti_stats.txtdeleting22_mongodb_cacti_stats.txtdeleting86_mongodb_cacti_stats.txtdeleting77_mongodb_cacti_stats.txt
sent55bytes
received12bytes
134.00bytes/sectotalsizeis0
speedupis0.00[root@232-238-qd-monitortmp]#ls[root@232-238-qd-monitortmp]#
[root@232-239-qd-monitortmp]#ls77_mongodb_cacti_stats.txt
22_mongodb_cacti_stats.txt
25_mongodb_cacti_stats.txt
monitor_bak.sh86_mongodb_cacti_stats.txt
24_mongodb_cacti_stats.txt
26_mongodb_cacti_stats.txt
sms.log[root@232-239-qd-monitortmp]#ls[root@232-239-qd-monitortmp]#wget/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gztar
-zxfinotify-tools-3.14.tar.gzcdinotify-tools-3.14
./configure&&make&&makeinstallroot@232-238-qd-monitorbin]#pwd/usr/local/bin[root@232-238-qd-monitorbin]#lsinotifywa*inotifywait
inotifywatch[root@232-238-qd-monitorbin]#inotifywait用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。
inotifywatch用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息。Inotify
可以监视的文件系统事件包括:IN_ACCESS,即文件被访问IN_MODIFY,文件被
writeIN_ATTRIB,文件属性被修改,如
chmod、chown、touch
等IN_CLOSE_WRITE,可写文件被
closeIN_CLOSE_NOWRITE,不可写文件被
closeIN_OPEN,文件被
openIN_MOVED_FROM,文件被移走,如
mvIN_MOVED_TO,文件被移来,如
mv、cpIN_CREATE,创建新文件IN_DELETE,文件被删除,如
rmIN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己IN_UNMOUNT,宿主文件系统被
umountIN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE|IN_CLOSE_NOWRITE)IN_MOVE,文件被移动,等同于(IN_MOVED_FROM|IN_MOVED_TO)备注:上面的文件也包括目录
Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面介绍一下常用的一些参数:
-m,即--monitor,表示始终保持事件监听状态。
-r,即--recursive,表示递归查询目录。
-q,即--quiet,表示打印出监控事件。
-e,即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。更详细的请参看man
inotifywait。inotify相关参数inotify定义了下列的接口参数,可以用来限制inotify消耗kernelmemory的大小。由于这些参数都是内存参数,因此,可以根据应用需求,实时的调节其大小。
/proc/sys/fs/inotify/max_queued_evnets
表示调用inotify_init时分配给inotifyinstance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
/proc/sys/fs/inotify/max_user_instances
表示每一个realuserID可创建的inotifyinstatnces的数量上限。
/proc/sys/fs/inotify/max_user_watches
表示每个inotifyinstatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小[root@232-238-qd-monitorinotify-tools-3.14]#cat/proc/sys/fs/inotify/max_queued_events16384[root@232-238-qd-monitorwangxu]#catrsync_inotify.sh#!/bin/bash#parahost01=39
##同步IP,可以设置多个src=/usr/local/nagios/etc
##同步的本地目录dst=nagios
##rsync服务端模块user=rsync_backup
##rsync用户rsync_passfile=/etc/rsync.passwordinotify_home=/usr/local#judgeif[!-e"$src"]\||[!-e"${rsync_passfile}"]\||[!-e"${inotify_home}/bin/inotifywait"]\||[!-e"/usr/bin/rsync"];then
echo"CheckFileandFolder"
exit9fi${inotify_home}/bin/inotifywait-mrq--timefmt'%d/%m/%y%H:%M'--format'%T%w%f'-eclose_write,delete,create,attrib$src\|whilereadfile
do
#rsync-avzP--delete--timeout=100--password-file=${rsync_passfile}$src$user@$host01::$dst>/dev/null2>&1
cd$src&&rsync-aruz-R--delete./
--timeout=100$user@$host01::$dst--password-file=${rsync_passfile}>/dev/null2>&1
doneexit0[root@232-238-qd-monitorwangxu]#[[root@232-238-qd-monitoretc]#sh/root/wangxu/rsync_inotify.sh&[root@232-238-qd-monitorwangxu]#ps-ef|grepinotifyroot
853426546
009:56pts/0
00:00:00grepinotifyroot
3043226546
009:48pts/0
00:00:00sh/root/wangxu/rsync_inotify.shroot
3043330432
009:48pts/0
00:00:00/usr/local/bin/inotifywait-mrq--timefmt%d/%m/%y%H:%M--format%T%w%f-eclose_write,delete,create,attrib/usr/local/nagios/etcroot
3043430432
009:48pts/0
00:00:00sh/root/wangxu/rsync_inotify.sh[root@232-238-qd-monitorwangxu]#[root@232-238-qd-monitoretc]#lscgi.cfg
htpasswd.bak.20140326
htpasswd.users
nagios.cfg
nrpe.cfg
objects.yuan
resource.cfghtpasswd
htpasswd.bk
htpasswd.users.bak
nagios.cfg.yuan
objects
pnp
server[root@232-238-qd-monitoretc]#
[root@232-239-qd-monitoretc]#pwd/usr/local/nagios/etc[root@232-239-qd-monitoretc]#lscgi.cfg
htpasswd.bak.20140326
htpasswd.users
nagios.cfg
nr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中学教师资格证考试教育知识与能力专项训练模拟试题版
- 2025年计算机技术与软件专业技术资格(水平)考试模拟试卷 程序设计专项训练
- 2025年高考物理电磁学难题解析冲刺试卷
- 2026届河北省石家庄市辛集中学化学高三上期末达标测试试题含解析
- 吉林省白城市洮南第十中学2026届化学高一上期末联考模拟试题含解析
- 研究生法律类题目及答案
- 个人信息保护协议格式
- 2026届安徽省滁州市民办高中化学高三第一学期期中学业水平测试试题含解析
- 玉米的秘密教学课件
- 贵州省铜仁市石阡县民族中学2026届化学高二上期中监测模拟试题含解析
- 小学科学教科版三年级下册全册思维导图(共24课)
- (三级)智能云服务交付工程师理论考试题库大全-中(多选题)
- 浙江省中小学心理健康教育课程标准
- 甲状腺术后出院健康宣教
- 《柔性棚洞防护结构技术规程》
- 2024年美国专利诉讼报告
- 施工现场临电方案
- FKYXII温控旋流风口
- 《共情的力量》课件
- 普通高中物理课程标准解读课件
- 《实验数据分析方法》课件
评论
0/150
提交评论