把之前做的文件同步,做记录写到博客记录下。
至于什么是rsync,inotify。这里不再详说。
源机:192.168.72.129 (web1)
备份机:192.168.72.130 (web2)
同步方向: web1--->web2
由于inotify特性需要Linux内核的支持,在安装inotify-tools前要先确认Linux系统内核是否达到了 2.6.13以上,如果Linux内核低于2.6.13版本,就需要重新编译内核加入inotify的支持,也可以用如下方法判断,内核是否支持 inotify(服务器系统为Centos5.5 x86_64):
uname -r
2.6.18-194.el5
ls -lsart /proc/sys/fs/inotify/
源机,备份机 都需要安装 rsync.
**************************************************************
1,源机(web1)
Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
(1)安装inotify-tools
tar zxf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure -prefix=/usr/local/inotify-tools make make install
(2)建立密码认证文件
echo "123456789" >/etc/rsync.pass #切记要把文件权限改为600 否则会报错 chmod 600 /etc/rsync.pass
(3)创建rsync复制脚本
此项功能主要是将server端的目录里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给client的备份目录里,下面是通过shell脚本实现的。
vim /etc/backup.sh
#!/bin/bash DESTHOST=192.168.72.130 #备份主机 DESTHOSTDIR=/var/www/html/ #备份目录 SRCDIR=/var/www/html/ #备份源目录 MODULESNAME=www #备份模块名,与备份机相对应 inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $SRCDIR | while read DATE TIME DIR FILE; do FILECHANGE=${DIR}${FILE} rsync -avzrtopg --delete --ignore-errors --password-file=/etc/rsyncd.pass $SRCDIR root@${DESTHOST}::$MODULESNAME echo "${FILE} was rsynced" >>/tmp/rsync.log 2>&1 #同步写入日志 done
chmod u+x /etc/backup.sh 赋予脚本执行权限
后台执行此shell:
/etc/backup.sh &
或设置开机启动
echo '/etc/backup.sh &' >> /etc/rc.d/rc.local
2,备份机(web2)
(1)建立同步rsync文件
# vim /etc/rsyncd.conf
uid = root #该选项指定当该模块传输文件时守护进程应该具有的uid gid = root #该选项指定当该模块传输文件时守护进程应该具有的gid user chroot = no port=873 #rsync端口号 max connections = 4 #同步最大的链接数 timeout = 600 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [www] #模块名,源主机配置会用到 path=/var/www/html/ #需要同步的目录 ignore errors #忽略无关的错误信息 read only = no #是否设置以只读的方式运行 list = no hosts allow = 192.168.72.129 #允许同步的客户端?如有多个以,逗号分隔 auth users = root #同步时所使用的用户名 secrets file = /etc/rsyncd.pass #该用户的密码保存位置 ,密码可自定义,但源机密码必须相同 exclude = data1/ ##排除目录
(2)建立密码文件
vim /etc/rsyncd.pass root:123456 #用户名与密码以:为分隔 chmod 600 /etc/rsyncd.pass #修改权限,修改为600,否则报错
(3)启动rsync
1,启动使rsync生效:
[root@master ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
2,设置为开机启动:
[root@master ~]# echo "/usr/bin/rsync --deamon --config=/etc/rsyncd.conf " >> /etc/rc.d/rc.local
Tip:这里的启动方式比较特殊,如果你要重启,需要kill掉rsync的进程,再重新运行!
3,另外还有另外一种启动rsync的方式,CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync
要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:
# chkconfig rsync on # vim /etc/xinetd.d/rsync # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon --config=/etc/rsyncd.conf #这里添加rsync的服务选项! log_on_failure += USERID }
service xinetd restart #重启xinetd
至此,同步成功了。
参考文章:
错误总结:http://www.jb51.net/article/31920.htm
详细文档:http://www.it165.net/admin/html/201403/2629.html