linux下实现两台服务器下文件夹文件实时同步

打印 上一主题 下一主题

主题 657|帖子 657|积分 1971

背景:
现在有服务器A,和服务器B,现在需要把服务器A的 /usr/tmp目次下的内容时刻和服务器B的内容举行时刻同步,当A服务器的该目次出现增编削时,保障B的该目次下的内容和A时刻一样,其中B的IP为:192.168.131.133

办理方案:利用inotifywait 和 rsync实现文件同步
1.在A服务器上安装inotifywait:
  1. 下载:https://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download
  2. 解压:tar -zxvf inotify-tools-3.13.tar.gz
  3. 安装:
  4. cd inotify-tools-3.13
  5. ./configure
  6. make
  7. make install
  8. 安装完后使用inotifywait -h检测是否安装成功
复制代码
2.在A服务器上安装rsync
  1. 下载: http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
  2. 解压:tar zxvf rsync-3.1.1.tar.gz
  3. 安装:
  4. cd rsync-3.1.1
  5. ./configure –prefix=/usr/local/rsync
  6. make
  7. make install
  8. 安装完成后使用rsync -h检测是否安装成功
复制代码
3.同步脚本:目的是实现A服务器的/usr/tmp下文件发生变化时,服务器B的/usr/tmp目次会跟随相应举行变化,新增,删除,更新等。(需要将IP改为B服务器的IP)
  1. sync_data.sh
  2. inotifywait -mr -e MODIFY,DELETE,CREATE,ATTRIB,MOVE /usr/tmp |  
  3. while IFS= read -r dir event file; do  
  4.     # 打印事件信息  
  5.     echo "The file $file in directory $dir was $event"  
  6.       
  7.     # 执行rsync命令同步/usr/tmp目录到本地  
  8.     rsync -avz --delete /usr/tmp/ 192.168.131.133:/usr/tmp/  
  9. done
复制代码
4.运行程序:增长可执行权限 chmod +x sync_data.sh
测试:手动执行 sh sync_data.sh,执行成功后打印如下:

开始测试新增,在A服务新增文件夹 aaa, 在A服务器的/usr/tmp目次下执行 mkdir aaa
A服务器下有两个文件夹:

B服务器下只有一个文件夹:

在A服务器下新建一个文件夹aaa,新建一个文件 a.py

此时,运行中的sync_data.sh会打印日志:

此时,再去B服务器上确认信息,数据已经同步成功:

5.背景摆设服务
手动闭幕掉刚才sh执行的脚本,然后背景执行该脚本,并将日志输出到指定目次 /tmp/async_data.log
  1. nohop sh async_data.sh > /tmp/async_data.log 2>&1 &
复制代码
如果需要闭幕这个程序,需要利用 ps -ef|grep async_data 获取到历程id,然后利用 kill -9 历程ID号 杀掉历程。
至此,文件夹同步使命执行完成。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表