方案说明:

该方案是使用 rsync+inotify实现文件实时同步,实现两个文件的实时同步,前置添加如下:

  1. 两台linux配置相同的机器,硬盘大小最好能够一样,需要安装centos 7.0
  2. 必须在同一内网,方便数据的传输。
  3. 最好两个主机同时使用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

创建源端和目标端的文件目录

mkdir /home/data/file

手动同步 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(每两分钟同步一次)