NFS+inotify实时同步
Inotify简介
Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问、修改、删除等各种变化情况并将其作为事件通告给用户态应用程序。Linux内核从2.6.13版本后已经集成了Inotify的功能,用户只需安装inotify应用程序即可实现对文件系统的监控。
配置Rsync服务端
rpm -qa | grep rsync vim /etc/rsyncd.conf uid = rsync #客户端进行数据传输时所使用的用户 gid = rsync #客户端进行数据传输时所使用的用户组 user chroot = no #安全相关 max connections = 200 #最大连接数 timeout = 300 #超时时间,客户端连接后300s不传输自动断开 pid file = /var/run/rsyncd.pid #进程号文件 lock file = /var/run/rsync.lock #锁文件 log file = /var/log/rsyncd.log #日志文件 ignore errors #忽略错误 read only = false #可写 list = false #客户端不能ls等进行列表 hosts allow = 172.16.1.0/24 #允许连接的主机 #hosts deny = 0.0.0.0/32 #拒绝的主机 auth users = rsync_backup #客户端登录账号名 secrets file = /etc/rsync.password #密码文件,用于验证 [backup] #模块名称 path = /backup/ #提供访问的目录 [nfsbackup] path = /nfsbackup useradd rsync -s /sbin/nologin –M mkdir /backup chown rsync.rsync /backup vim /etc/rsync.password rsync_backup:peterwang chmod 600 /etc/rsync.password rsync --daemon ps -ef | grep rsync | grep -v grep lsof -i :873 echo "/usr/bin/rsync --daemon" >> /etc/rc.local
配置NFS服务端
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install -y inotify-tools vim /etc/rsync.password peterwang chmod 600 /etc/rsync.password mkdir /server/scripts -p cd /server/scripts vim inotify.sh #!/bin/bash export PATH=/bin:/usr/bin:/usr/local/bin SRC=/data DEST=nfsbackup IP=172.16.1.41 USER=rsync_backup PASSFILE=/etc/rsync.password inotifywait -mrq --format '%w%f' -e modify,create,move,delete,attrib $SRC \ | while read line do NUM=$(echo $line | grep -o "/" | wc -l) if [ $NUM -gt 2 ];then DIR=$(echo $line | awk -F "/" '{print "/"$2"/"$3}') rsync -az $DIR --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE else rsync -az $SRC/ --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE fi done & sh inotify.sh echo "/bin/sh /server/scripts/inotify.sh " >> /etc/rc.local