两台服务器定时同步文件解决方案:
环境:
主机:192.168.1.1 镜像机:192.168.1.2 需要将主机内容备份至镜像机(假设用户都为root)
备份内容为 /export 目录下所有内容至镜像机的/export目录下
首先,配置ssh免密登陆:
在镜像机上执行:ssh-keygen -t rsa
然后cat ~/.ssh/id_rsa.pub
将内容复制到主机的 ~/.ssh/authorized_keys下(最后一行最好是空行)
(这样一来主机就记住了镜像机的身份,镜像机即可免密登陆)
第二步,在镜像机写好同步脚本(使用rsync):
vim /root/backup_rsync
#/bin/bash
rsync -avuz root@192.168.1.1:/export/* /export >> /root/backup_rsync.log
(解释:参数a是归档模式,v为详细输出,u为只同步更新的文件或不存在的文件,z是同步时先压缩,然后将输出重定向到rsync.log文件中记录日志)
第三步,在镜像机配置crontab,使用flock文件锁防止同步脚本并发执行:
crontab -e
*/5 * * * * flock -xn /root/backup_rsync.lock -c /root/backup_rsync
(解释:-n为非阻塞模式,当试图设置锁失败,采用非阻塞模式,直接返回1,-c后跟要执行的命令,这里crontab每五分钟跑一次)
第四步,监控同步信息
tailf /root/backup_rsync.log
大功告成,可在主机上输入top观察rsync进程