实现两台Linux主机文件实时同步
实现两台Linux主机文件实时同步
描述
现有服务器A和服务器B,如果服务器A的指定目录(例如/home/paul/rsync/
)中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如/home/paul/rsync/
)
实现
- 安装Rsync
- 配置服务器之间免密登录
- 文件系统监听
代码
yum install rsync
# 服务器A执行
ssh-keygen
ssh-copy-id 服务器B的IP地址
# 在服务器A中
mkdir /home/paul/rsync
# 服务器B中
mkdir /home/paul/rsync
# 服务器A创建测试文件
echo "Hello from Server A" >> /home/paul/rsync/demo.txt
# 测试
# 将服务器A中的/home/paul/rsync目录内的文件复制到服务器B(192.168.100.130)的/home.paul/rsync中
rsync -avPz --progress /home/paul/rsync 服务器B的IP地址:/home.paul/rsync
# 比较目标端和源端的文件,如果目标端的文件在源端不存在,在目标端删除该文件
rsync -avPz --delete --progress /home/paul/rsync 服务器B的IP地址:/home.paul/rsync
# 安装文件系统事件监听工具inotify
yum install -y epel-release
yum --enablerepo=epel install inotify-tools
# 同步脚本
touch inotifywait-rsync.sh
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /home/paul/rsync/ | while read file
do
rsync -avPz --progress /home/paul/rsync/ 服务器B的IP地址:/home/paul/rsync/
rsync -avPz --delete /home/paul/rsync/ 服务器B的IP地址:/home/paul/rsync/
echo "${file} was synchronized"
done
# 定时任务
crontab -e
* * * * * sh /home/paul/inotifywait-rsync.sh
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
还没有评论,来说两句吧...