手机版
你好,游客 登录 注册
背景:
阅读新闻

rsync实现数据备份详解

[日期:2017-06-18] 来源:Linux社区  作者:jasmine-Jobs [字体: ]

脚本实现定时自动备份 

[root@xiaolyu77 ~]# vim autobackup.sh 

#!/bin/bash
rsync -avz rsyncuser@xiaolyu76::wwwroot --password-file=passfile /web-back/

定时自动备份:每天凌晨3:01自动进行备份。

[root@xiaolyu77 ~]# echo "01 3 * * * sh /root/autoback.sh &" >> /var/spool/cron/root

四、Rsync+Inotify 实时同

  Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。可以监控某个用户,什么时间,做了什么动作!

  使用 rsync 工具与 inotify 机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

下载地址:http://sourceforge.net/projects/inotify-tools/                 notify-tools-3.13

我们把xiaolyu76上/var/www/html目录实时同步到xiaolyu77的/web-back目录中

1. 查看内核支持inotify和调整

[root@xiaolyu76~]# uname -r                //inotify从kernel2.6.13开始正式并入内核,开始支持

2.6.32-431.el6.x86_64

[root@xiaolyu76 ~]# ls /proc/sys/fs/inotify/                 //查看调控参数

max_queued_events         #表示监控时间队列           默认16384 可以使用cat命令查看

max_user_instances          #表示最多监控实例数        默认128

max_user_watches           #表示每个实例最多监控文件数    默认8192

#在Linux内核中,默认的Inotify机制提供了三种调控参数,当要监控的目录,文件数比较多的时候或者变化比较频

繁的时候,要加大三个数值

可以直接修改/etc/sysctl.conf配置文件,将管理队列设置为32786,实例数:1024,文件数:9000000(大于监控目标总数即可)

[root@xiaolyu76 ~]# vim /etc/sysctl.conf

#在末尾添加下面三行

fs.inotify.max_queued_events =32768

fs.inotify.max_user_instances =1024

fs.inotify.max_user_watches =90000000

 

 

2. 安装inotify-tools

安装 inotify-tools 后,将拥有 inotifywait、inotifywatch 辅助工具程序,从而来监控、汇总文件系统改动情况。

[root@xiaolyu76~]# tar xvf inotify-tools-3.13.tar.gz -C /usr/local/src/;echo $?

[root@xiaolyu76 ~]# cd /usr/local/src/inotify-tools-3.13/

[root@xiaolyu76 inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify-tools ; make ; make install ;echo $?

 注意:每一步做完了,要echo $?看一下是否成功,尤其是在非常大的源码包安装时。

也可以通过yum方式来安装:yum install inotify*  -y  //傻瓜式安装,哈哈。

3.测试inotifywait

       使用 inotifywait 命令监控网站目录/var/www/html发生的变化。然后在另一个终端向/var/www/html目录下添加文件、移动文件,查看屏幕输出结果。

[root@xiaolyu76 ~]# ln -s /usr/local/inotify-tools/bin/* /usr/bin/        //方便直接调用命令,当然了,也可以直接复制到/usr/bin下面的。随意啦。

inotifywait常用参数:

-e  用来指定要监控哪些事件。这些事件包括: create 创建,move 移动,delete 删除,modify 修改文件内容,attrib 属性更改。

-m 表示持续监控

-r  表示递归整个目录

-q 表示简化输出信息。

在监控终端执行下面的命令:

[root@XueGod6 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

另外开一终端,做一些改动

[root@xiaolyu76 ~]# echo "watch rsync" > /var/www/html/watch.html
[root@xiaolyu76 ~]# mkdir /var/www/html/test
[root@xiaolyu76 ~]# cp /etc/passwd /var/www/html/test/
[root@xiaolyu76 ~]# rm -rf /var/www/html/test/passwd

查看监控终端

/var/www/html/ CREATE watch.html
/var/www/html/ MODIFY watch.html
/var/www/html/ CREATE,ISDIR test
/var/www/html/test/ CREATE passwd
/var/www/html/test/ MODIFY passwd
/var/www/html/test/ DELETE passwd

监控端执行命令后,进入监控等待:

发起终端:

监控终端变为:

#使用 inotifywait 输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

4.触发式同步脚本

首先要做好免密码链接

 #说明:本质上,scp,rsync都是ssh登录,前面博客已经详细说过ssh免密码登录,这里一笔带过。

[root@xiaolyu76 ~]# ssh-keygen

[root@xiaolyu76 ~]# ssh-copy-id root@xiaolyu76

编写脚本

[root@xiaolyu76 ~]#  vim inotify.sh

#!/bin/bash
src=/var/www/html
dest=root@xiaolyu77:/web-back
inotifywait -mrq -e modify,delete, create,attrib  ${src} | while read D E F 
do
    /usr/bin/rsync -avz --delete $src $dest
done

[root@xiaolyu76 ~]# chmod +x inotify.sh ; echo "sh /root/inotify.sh &" >> /etc/rc.local

 说明:上面脚本中的三个变量,就对应

inotifywait -mrq -e modify,delete, create,attrib  ${src} 执行后的结果中的三列,例如:
只要检测到变动时间,执行rsync上行同步操作,拉数据。
脚本执行的检测终端:

发起变化的终端:

 

除了上面rsync + inotify的备份方法,还有rsync + sersync。 当有海量的小数据文件的时候,inotify 会有延迟!然而,rsync + sersync 也很危险。

当黑���将你的数据删除后,rsync + sersync 后将删除同步更新到你的备份数据。慎用!

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-06/144901.htm

linux
相关资讯       rsync 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款