WEB2
安装通过WEB1,唯一不同的内容如下:
uid=nobody
gid=nobody
use chroot=no
max connections=10
strict modes=yes
pidfile=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
logfile=/var/log/rsyncd.log
[data2]
path=/data/wwwroot/htdocs/
ignore errors
read only=no
write only=no
hostsallow=172.16.100.0/24
host deny=*
list=no
uid=root
gid=root
auth users=root
secretsfile=/etc/rsyncd/rsyncd.secrets
外网测试服(rsync + inotify 客户端)
安装rsync
wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.0.tar.gz
tar zxvfrsync-3.1.0.tar.gz
cd rsync-3.1.0
./configure--prefix=/usr/
make &&make install
mkdir -p/etc/rsyncd
cd /etc/rsyncd/
touch rsyncd.password
echo"1q2w3e4r5t6y" > rsyncd.password
chmod 600 rsyncd.password
mkdir -pv/data/wwwroot/htdocs
安装inotify-tools
rpm -ivh http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum makecache
yum installinotify-tools inotify-tools-devel –y
自动同步脚本后台运行【保证更新到测试服上的代码正确性】
vim /root/rsync_auto.sh
#!/bin/bash
# Author by:Tommy.Gandolf
#
HOST1=172.16.100.100
HOST2=172.16.100.105
SRC=/data/wwwroot/htdocs/
DST1=data1
DST2=data2
USER=root
/usr/bin/inotifywait-mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -emodify,delete,create,attrib $SRC | whileread read date time dir files; do
/usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST1::$DST1 --exclude='.svn/' --exclude='.settings/'--exclude='.project'
/usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST2::$DST2 --exclude='.svn/' --exclude='.settings/'--exclude='.project'
echo "${files} was rsynced">>/tmp/rsync.log 2>&1
done
# chmod +x rsync_auto.sh
# nohup sh rsync_auto.sh & > /dev/null 备注:如果同步的目录有内同,不能触发同步,请先在同步目录创建一个文件,尝试触发同步文件。
??????????? 手动同步脚本【推荐此方案】
??????????? 说明:测试OK,手动推送到正式服务器
# vim rsync.sh
#!/bin/bash
# Author by:Tommy.Gandolf
#
HOST1=172.16.100.100
HOST2=172.16.100.105
SRC=/data/wwwroot/htdocs/
DST1=data1
DST2=data2
USER=root
/usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST1::$DST1 --exclude='.svn/' --exclude='.settings/'--exclude='.project'
/usr/bin/rsync -vzrtopg --delete --progress--password-file=/etc/rsyncd/rsyncd.secrets $SRC $USER@$HOST2::$DST2 --exclude='.svn/' --exclude='.settings/'--exclude='.project'
echo "${files} was rsynced">>/tmp/rsync.log 2>&1
配置内核参数
Inotify默认内核参数值太小
默认参数:
# sysctl? -a | grep max_queued_events
fs.inotify.max_queued_events = 16384
?
# sysctl -a |? grep max_user_watches
fs.inotify.max_user_watches = 8192
fs.epoll.max_user_watches= 148131
# sysctl? -a | grep max_user_instances
fs.inotify.max_user_instances = 128
修改:vim /etc/sysctl.conf
fs.inotify.max_queued_events = 99999999
fs.inotify.max_user_watches = 99999999
fs.inotify.max_user_instances = 65535
# sysctl? -p
FAQ
Rsync 常用用法
1.在本地机器上对两个目录进行同步
rsync -zvr /data/wwwroot/htdocs/ /tmp/
参数:-z 开启压缩,-v 详细输出 –r 表示递归 –a 保留时间标记
2.仅同步一个文件
rsync? -azvr /data/wwwroot/htdocs/test.txt /tmp/
3.从本地同步到远程
rsync -avz /data/wwwroot/htdocs/ root@172.16.100.105:/data/wwwroot/htdocs_test/
4.同步远程到本地
?rsync -avz root@172.16.100.105:/r