Rsync
可以镜像保存整个目录树和文件系统
可以很容易做到保持原来文件的权限、时间、软硬链接等等
无须特殊权限即可安装
快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接支持匿名传输,以方便进行网站镜象
常用选项
//rsync常用选项:
-a, --archive //归档
-v, --verbose //啰嗦模式
-q, --quiet //静默模式
-r, --recursive //递归
-p, --perms //保持原有的权限属性
-z, --compress //在传输时压缩,节省带宽,加快传输速度
--delete //在源服务器上做的删除操作也会在目标服务器上同步
环境
机器 | ip | 软件 | 目录 |
---|---|---|---|
master | 192.168.50.60 | rsync,inotify-tooks,脚本 | /web1/wwwroot |
slave | 192.168.50.61 | rsync | /web1/wwwroot |
安装使用
slave
yum -y install rsync
vim /etc/rsync.conf
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[web1]
path = /web1/wwwroot
comment = web1 file
ignore errrors
read only=no
write only=no
hosts allow=*
hosts deny=192.168.60.10
list=false
uid=root
gid=root
auth users=web1user
secrets file=/etc/web1.pass
创建密码文件
(文件格式:user:pass)
/etc/web1.pass
web1user:www123
权限
chmod 600 /etc/web1.pass
启动和自启
systemctl start rsyncd
systemctl enable rsyncd
master (发布节点)
安装
yum install rsync gcc -y
wget http://github.com/downloads/rvoicilas/inotify-tools/
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make && make install
密码文件
和节点服务器密码一致
vim /etc/server.pass
www123
chmod 600 /etc/server.pass
脚本编辑
#!/bin/bash
host1=192.168.50.61
src=/web/wwwroot/
dst1=web1
user1=web1user
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1 > /dev/null 2>&1
echo "${files} was rsynced." >> /tmp/rsync.log 2>&1
done
脚本放入后台执行
在master上面的/web/wwwroot 添加\删除\修改文件
slave 上面的 /web1/wwwroot 会同步变化