linux 本地文件服务器同步方案
原创
©著作权归作者所有:来自51CTO博客作者houxian1103的原创作品,请联系作者获取转载授权,否则将追究法律责任
方案说明:
该方案是使用 rsync+inotify实现文件实时同步,实现两个文件的实时同步,前置添加如下:
- 两台linux配置相同的机器,硬盘大小最好能够一样,需要安装centos 7.0
- 必须在同一内网,方便数据的传输。
- 最好两个主机同时使用root 账户。
ps:实例方案使用的两个ip如下:
10.100.12.247 主
10.100.12.252 备
基础文件安装:
yum install rsync
yum install -y epel-release
yum --enablerepo=epel install inotify-tools
设置主机之间的免密登录
在主机(10.100.12.247) 上执行如下命令:
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub iot@10.100.12.252
创建源端和目标端的文件目录
手动同步 247服务 中的 /home/data/file/ 到 252 /home/data/file
rsync -avPz --progress /home/data/file 10.100.12.252:/home/data/file
rsync -avPz --delete --progress /home/data/file 10.100.12.252: /home/data/file
最好使用如下命令进行同步完成后进行,下面的操作。防止同步任务堆积。
vim inotifywait-rsync.sh文件
notifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /home/data/file/ |
#while read file
#do
rsync -avPz --progress /home/data/file/ 10.100.12.247:/home/data/file/
rsync -avPz --delete /home/data/file/ 10.100.12.247:/home/data/file/
echo "${file} was synchronized"
#done
添加定时任务
vim /etc/crontab
*/2 * * * * root /home/data/inotifywait-rsync.sh(每两分钟同步一次)