Linux数据备份Rsync+inotify+crontab+tar(二)

来源:互联网 发布:开淘宝做什么好 编辑:程序博客网 时间:2024/06/09 15:34

有一段时间没有更新博客了,本来说要把备份的相关说明文档及早更新,结果由于种种原因没有完成相关内容,现在我来完善rsync+inotify的备份相关内容。

目前我的Linux工作环境多在CentOS下进行,版本小于6.57.0的界面炫的一塌糊涂,但是公司没有一台服务器运行7.0,给出的方案内否在7.0稳定运行没有确切答案。首先说rsync的配置,我的目标很简单就是让rsync跑起来,然后保证能用,为啥会强调这些呢,因为别的没有人给发饷去做深入的研究,下面开始上干货。

CentOS 6.5安装rsync命令  yuminstall rsync

当然,你也可以谨慎点儿先检查一下rsync是否安装 rpm -qa|grep rsync,下图就是我的检查结果如图Fig.1,显示已安装。

Fig.1rsync安装检查

       如果你觉得不爽,可以直接下载源码编译,如果到了那一步我只有恭喜你的分了,无能为力去指导。按照以上的装好rsync后我们就可以进行inotify的安装了。inotify是一个比较独特理性的,一般情况下不会包含在源里面,所以我就不能再偷懒啦,我们要先下载inotify的.tar.gz的安装包。下载网址:http://sourceforge.net/projects/inotify-tools/

如果打不开可以试试https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

还是打不开就请吐槽天朝的特色吧,实在不行我们有很多国内站点也提供相关文件。

shell命令行下下载文件wget命令

wget--no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

windows界面浏览器里面你可以通过页面下载 ,只有几百K,会很快。

http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download?use_mirror=nchc&r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Finotify-tools%2F&use_mirror=nchc


Fig.2 Github下载失败


Fig.3搜狗浏览器下载成功

Fig.2Fig.3是我下载的测试结果,这次我只下载成功了3.13版本。上传该压缩包到Linux服务器来解压缩,命令如下

tar zxf inotify-tools-3.13.tar.gz

解压缩完成后可以看到如下图Fig.4一个文件和一个文件夹


Fig.4 inotify解压缩

切换到inotify-tools-3.13文件夹, 当然你已可以指定安装目录

 ./configure    --prefix=/usr/local/inotify/

如果想偷点懒,下面的命令最适合你

./configure

然后

make&& make install

inotify安装完成后总要检查一番的,在系统下执行man inotify 、 man inotifywait、man inotifywatch即可得到相应的帮助信息,如果看到类似如图Fig.5的信息 则表示安装完成,当然有时候man inotify没有结果,其他两个都有结果,这样也是可以保证我们的系统正常工作的。


Fig.5 inotify安装完成度检查

RsyncInotify-tools都安装完成,下面就是配置了。

 首先配置rsyncserver自动启动

vi/etc/xinetd.d/rsync

disable=yes改为no

service rsync

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

}

正常启动启动rsync服务端(独立启动)

[root@server2 ~]##/usr/bin/rsync –daemon

设置开机自动启动

[root@test etc]#chkconfig rsync on

[root@test etc]#chkconfig rsync –list

rsync on

xinetd超级进程启动rsync服务端(有xinetd超级进程启动)

 [root@server2 ~]##/etc/init.d/xinetd reload

加入rc.local

在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时把rsync --daemon加载进去。


 

[root@server2 ~]## vi /etc/rc.local

/usr/bin/rsync  --daemon #加入一行

rsync启动检查

[root@server2 ~]# lsof -i :873

COMMAND   PIDUSER   FD   TYPE    DEVICE SIZE/OFF NODE NAME

xinetd  11890root    5u  IPv6 3296183346      0t0 TCP *:rsync (LISTEN)

rsync   19978root    0u  IPv4 3466833074      0t0 TCP 192.168.0.13:rsync->192.168.0.11:42728 (ESTABLISHED)

rsync   19979root    0u  IPv4 3466833074      0t0 TCP 192.168.0.13:rsync->192.168.0.11:42728 (ESTABLISHED)

rsync文件同步目录配置

下面是信息内容。当然/var/rsync目录是要自己创建的,welcome.msg内容可以由你自己定制的。

[root@server2duanhy]# cd  /etc/

[root@server2 etc]#cat  rsyncd.conf

##file of/etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections =20

motdfile=/var/rsync/welcome.msg

pid file =/var/rsync/rsyncd.pid

lock file =/var/rsync/rsync.lock

log file =/var/rsync/rsyncd.log

#path =/home/duanhy/web/        #欲备份文件夹

#auth users = test                         #rsync账号

#hosts allow =  192.168.0.11

#ignore errors   #以防止因为暂时的资源不足或其它IO错误导致的严重问题

#secrets file =/etc/rsyncd.pass    #内容格式为id:passwd

[test]

path= /home/backup/test

comment= analyse

read only = no

allow = *

配置文件名推荐rsyncd.conf

配置检查

配置完成,检查/etc/servicesrsync端口号是否存在,若不存在请找下例子正确写入。

[root@test etc]#vim /etc/services

rsync 873/tcp #rsync

rsync 873/udp #rsync

启动守护进程

 /usr/local/bin/rsync--daemon 

验证启动是否成功

 ps    -aux     |    grep     rsync

Warning: badsyntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root      9685 0.0  0.0 101392   632 ?        Ss  Nov24   0:00 rsync --daemon

root    23738  0.0  0.0 103248   876 pts/3    S+   13:38  0:00 grep rsync

检查端口号,如果防火墙打开了,请放873一马

netstat    -an     |    grep     873

tcp       0      0 0.0.0.0:873                0.0.0.0:*                  LISTEN       

tcp       0      0 :::873                     :::*                       LISTEN      

同步文件

如果你没有设置模块,指定上传的目录向服务器上传命令如下,结果如Fig6所示:

rsync-avz  webduanhy@192.168.0.13:/home/duanhy/

Fig.6  同步客户端文件到服务器

从服务器向下同步文件命令,结果如图Fig.7所示

rsync -avzduanhy@192.168.0.13:/home/duanhy/web /home/duanhy/


Fig.6  同步服务器文件到客户端

以上方法必须制定服务器同步的路径,如果我们设置了rsync配置模块,我们就可以同步到模块指定路径,实力指定模块名为test,路径为/home/backup/test,命令如下:

同步上传到服务器       rsync -avz  /home/duanhy/crmduanhy@192.168.0.13::test

同步到客户端             rsync -avz  duanhy@192.168.0.13::test/crm  /home/duanhy/

配置带密码的模块

参考(http://www.iteye.com/topic/604436

如果我们在最初时的时候没有设置密码的话,使用模块是不需要密码的,如果指定模块一味的目录则需要拥有该目录权限用户的密码。带密码的配置,

1、服务器端:要求rsync文件同步目录配置中rsync.conf文件中指定使用密码以及文件目录。配置rsync密码(在上边的配置文件中已经写好路径)/home/rsync.ps(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)

[root@server2 ~]#vi /home/rsync.ps 

scihoo:scihoo

2配置rsync密码文件权限

[root@server2 ~]# chown root.root rsync.ps 

[root@server2 ~]# chmod 400 rsync.ps 

3、客户端配置密码文件 (注:为了安全,设定密码档案的属性为:600rsync.ps的密码一定要和rsyncServer密码设定的密码一样)

[root@aj1 home]# virsync.ps 

Sciooo

[root@web home]#chown root.root .rsync.ps    # 注意必须给权限

[root@web home]#chmod 600 .rsync.ps           # 必须修改权限

同步脚本

下面上干货,shell脚本

#!/bin/bash

web=/home/duanhy/web/

/usr/local/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib$web |  while read file

do

        /usr/local/bin/rsync -arzuq $web192.168.0.13::web/

     echo "  ${file} was rsynced">>/home/duanhy/rsync.log 2>&1

done

实现该脚本有赖于inotifywait的检测结果,所以难怪我们监测的文件数目多于inotifywait上限时会出现问题,这是我们就要修改/proc/sys/fs/inotify/max_user_watches文件,我把检测文件数目提高了1000倍,命令如下

原始数据

[root@localhostduanhy]# more /proc/sys/fs/inotify/max_user_watches

8192

echo"8192000">/proc/sys/fs/inotify/max_user_watches

这样我们的inotify就可以保证我们的脚本正常运行了,以上的操作满足了rsync的基础配置,如需对命令进行更深入了解,请参考manrsyncman inotifywait命令展示的手册。

保存shell脚本,命名为inotify_bak.sh,root下sh inotify_bak.sh运行备份脚本,Crt+Z,然后bg,exit,提交到后台运行。





0 0
原创粉丝点击