rsync + inotify 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