文档章节

linux下两台服务器文件实时同步方案设计和实现

自由的角马
 自由的角马
发布于 2015/01/10 13:58
字数 729
阅读 66
收藏 1

原文:http://blog.csdn.net/5iasp/article/details/13630927


假设有如下需求:

假设两个服务器:

192.168.0.1 源服务器  有目录 /opt/test/

192.168.0.2 目标服务器  有目录 /opt/bak/test/

实现的目的就是保持这两个服务器某个文件目录保持实时同步


实现方式: 通过rsync+inotify-tools结合来实现


需要安装软件:

1.  rsync 同步软件


   在 源服务器 和 目标服务器 都需要安装

  
   源服务器: 是rsync客户端,不需要配置

 目标服务器: 是rsync服务器端,需要配置/etc/rsyncd.conf里的内容


  安装后需要新建配置文件:/etc/rsyncd.conf

  配置文件在: /etc/


文件内容如下:

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file= =/var/run/rsyncd.log

[www]
path= /opt/bak/test
comment= analyse
read only = false
hosts allow = *


  

2.  inotify-tools 工具

该工具为文件实时监控工具,需要linux操作系统内核支持,内核支持需要至少版本为2.6.13

检查操作系统是否支持,执行如下:

uname -r  查看版本

返回:

2.6.32-220.4.1.el6.x86_64


则表示版本2.6.32 大于2.6.13,则支持。

执行:

ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

有三项输出,则表示默认支持inotify,可以安装inotify-tools工具.


如果不支持,需要采用新版本的linux操作系统

版本达到要求,就可以安装了。

安装inotify-tools后会在相关安装目录下生成如下两个文件:

ll /usr/local/bin/
total 88
-rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
-rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch

则表示安装成功。


注意: 在 源服务器上需要安装,目标服务器上不需要安装inotify。


3. 相关脚本:


 在源服务器上新建脚本:

inotify_bak.sh

#!/bin/bash
src=/opt/test/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src |  while read file
do
    
      /usr/bin/rsync -arzuq $src 192.168.0.2::www/

      echo "  ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
done

 

注意: 这里的 www 是在目标服务器/etc/rsyncd.conf里配置的模块名称:[www]

 

赋予执行权限: chmod +x  inotify_bak.sh

然后执行: inotify_bak.sh &  放入后台执行

 

4. 关于启动

   目标服务器:先启动rsync后台服务: /usr/bin/rsync --daemon

   来源服务器: 执行 inotify_bak.sh & 


5. 测试:

   在来源服务器目录中新建目录和文件,inotify_bak.sh脚本会检测到,然后同步到目标服务器的相关目录下

 
   可以查看日志文件: /opt/soft/log/rsync.log 命令如下:观察实时同步的情况。

   tail -f  /opt/soft/log/rsync.log

更多 0
  • 上一篇:备份远程服务器文件简单shell脚本
  • 下一篇:java中List按照指定字段排序工具类
  • 本文转载自:http://blog.csdn.net/luoweifu/article/details/18318027

    自由的角马
    粉丝 1
    博文 269
    码字总数 0
    作品 0
    文山
    私信 提问
    实时备份工具之inotify+rsync

    1.inotify简介 inotify 是一个从 2.6.13 内核开始,对 Linux 文件系统进行高效率、细粒度、异步地监控机制, 用于通知用户空间程序的文件系统变化。可利用它对用户空间进行安全、性能、以及其...

    IT_外卖小哥
    2018/10/30
    0
    0
    unison+inotify-tools双向实时同步,cpu占用高

    大家好,我是一个初学linux的新手,在用两台服务器做双向实时同步的时候,发现unison占用的cpu长时间很高,不知道什么原因,百度 谷歌了很多 都找不到答案。特来向强大的网友们求助,不知道你...

    蜀山三
    2016/11/05
    521
    0
    inotify+unison双向同步环境部署

    在网上搜寻了很多方案,在liux下做文件同步,有如下几种方式: 1、nfs实现web数据共享 2、rsync +inotify实现web数据同步 3、rsync+sersync更快更节约资源实现web数据同步 4、unison+inotif...

    那些年我们一起
    2014/12/29
    5.2K
    2
    Heartbeat+DRBD+MySQL高可用方案

    Heartbeat+DRBD+MySQL高可用方案 =============================================================================== 概述: ==========================================================......

    逐梦小涛
    2018/06/26
    0
    0
    利用FAM和IMON在Linux下实现数据复制

    在本文中我们将要讨论的是,如何抛开昂贵的SAN(存贮区域网络Storage Area Network,如全球文件系统GFS)或网络块设备在Linux下实现数据复制。我们在复制系统中采用了FAM(文件变更监视模块)...

    zt371
    2009/05/07
    582
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    Mybatis Plus删除

    /** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

    一个yuanbeth
    今天
    4
    0
    总结

    一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

    BobwithB
    今天
    4
    0
    java内存模型

    前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

    ls_cherish
    今天
    4
    0
    友元函数强制转换

    友元函数强制转换 p522

    天王盖地虎626
    昨天
    5
    0
    js中实现页面跳转(返回前一页、后一页)

    本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

    前端老手
    昨天
    5
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    返回顶部
    顶部