rsync + inotify web文件实时同步

admin2013-09-23linux120
web文件实时同步 rsync + inotify web文件实时同步 蓝色为需要执行的命令,红色为需要注意的地方 web_server (内容分发服务器) 1.1.1.1 (安装rsync和inotify-tools) 需要备份的目录:/www/web/ceshi/public_html/d web_back (节点服务器) 2.2.2.2 (安装rsync) 备份的目的目录:/home/wwwroot/ ###################################################### 安装inotify工具inotify-tools 查看当前机器是否安装inotify ll /proc/sys/fs/inotify 总计 0 -rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events -rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances -rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches 如果有上面三项输出,表示系统已经默认支持inotify,接着就可以开始安装inotify-tools了。 可以到http://inotify-tools.sourceforge.net/下载相应的inotify-tools版本,然后开始编译安装: wget http://d.10vps.com/linux-soft/rsync/inotify-tools-3.14.tar.gz tar zxvf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure make make install 查看是否安装成功 ll /usr/local/bin/inotifywa* -rwxr-xr-x 1 root root 37264 04-14 13:42 /usr/local/bin/inotifywait -rwxr-xr-x 1 root root 35438 04-14 13:42 /usr/local/bin/inotifywatch 如果有上面两项输出,表示软件已经装上 ###################################################### 安装rsync yum -y install gcc gcc-c++ autoconf automake wget http://d.10vps.com/linux-soft/rsync/rsync-3.0.4.tar.gz tar zxvf rsync-3.0.4.tar.gz cd rsync-3.0.4 ./configure make make install ###################################################### web_server (内容分发服务器) 配置如下: vi /www/inotifyrsync.sh ### #!/bin/bash host1=2.2.2.2 #此处host1的ip是节点服务器的ip src=/www/web/ceshi/public_html/d/ #此处src是"需要备份的目录:/www/web/ceshi/public_html/d/" dst1=web1 #此处dst目的同步模块为节点rsyncd.conf配置文件中的web1 user1=web1user #此处用户web1user为节点服务器上配置的用户 /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \ | while read files do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 done ### 将脚本转化为unix模式 dos2unix /www/inotifyrsync.sh 将节点上认证用户的密码写入密码文件 echo "10isp" >> /etc/server.pass chmod 600 /etc/server.pass 修改同步脚本的权限 chmod 755 /www/inotifyrsync.sh nohup /www/inotifyrsync.sh & 最后,将此脚本加入系统自启动文件: echo "nohup /www/inotifyrsync.sh &" >>/etc/rc.local 查看软件是否运行 ps -ef | grep inotify 开启同步后最好在目录下touch一个文件 来激活同步 查看同步日志 tail -f /tmp/rsync.log ###################################################### web_back (节点服务器) 配置如下: vi /etc/rsyncd.conf ### uid = nobody gid = nobody use chroot = no max connections = 10 strict modes = yes pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [web1] path = /home/wwwroot/ #此处为"备份的目的目录:/home/wwwroot/" comment = web1 file ignore errors read only = no write only = no hosts allow = 1.1.1.1 #只允许内容分发服务器的ip进行同步 hosts deny = * list = false uid = root gid = root auth users = web1user secrets file = /etc/web1.pass ### dos2unix /etc/rsyncd.conf 添加虚拟用户 echo "web1user:10isp" >> /etc/web1.pass 修改用户帐号密码文件的权限 chmod 600 /etc/web1.pass 运行软件 /usr/local/bin/rsync --daemon 最后,将此运行脚本加入系统自启动文件: echo "/usr/local/bin/rsync --daemon" >>/etc/rc.local 查看软件是否监听 netstat -anlp | grep rsync ###################################################### -m 是保持一直监听 -r 是递归查看目录 -q 是打印出事件~ -e create,move,delete,modify 监听 创建 移动 删除 写入 事件 rsync -aHqzt $SRC $DST -a 存档模式 -H 保存硬连接 -q 制止非错误信息 -z 压缩文件数据在传输 -t 维护修改时间 -delete 删除于多余文件 当要排出同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径。详细查看man rsync 当要排除都某个目录的事件监控的处理时,为inotifywait添加--exclude或--excludei参数。详细查看man inotifywait