Rsync 用来实现触发式的文件同步。
  Inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应;
所以使用inotify监控文件系统有任何变动时,然后就触发rsync同步,达到了单向实时同步数据的功能。

Rsync

默认安装 或者 源码下载 安装;
 yum install rsync -y  
同步的备机需要启动服务 开启 873 端口;
示例启动 /usr/bin/rsync --daemon
可以添加到 /etc/rc.load 启动项中;

示例:

A: web-server    192.168.2.5
B: web-bak 192.168.2.6

一、web-bak 配置:

在 bak 服务上 安装 Rsync

默认端口是873,默认安装时候没有这个文件 需要手动创建配置文件 rsyncd.conf

对于非匿名访问的 rsync 服务器还要创建认证口令文;

1、创建配置文件:

# vi /etc/rsyncd.conf

[root@web-bak ]# cat /etc/rsyncd.conf 
uid = root
gid = root
use chroot = no
max connections = 100
timeout = 30
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [server1]
path = /backup/
comment = backup file
ignore errors
read only = no
write only = no
hosts allow = 192.16.2.5
# 指定能进行同步的机器。 多个 IP 或者网段 用空格隔开;
# hosts deny = *
list = false
uid = root
gid = root
auth users = bakup
# 验证用户
secrets file = /etc/rsync.pass
# 添加验证密码文件

2、创建 rsync.pass 文件 (需要设置为当前用户下的只读权限)

chmod 600 /etc/rsync.pass

[root@web-bak ]# cat /etc/rsync.pass 
bakup:server1

3、默认启动

默认启动
/usr/bin/rsync --daemon

同步 :

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/user.passwd user@172.16.3.18::server /opt/bak/
#
# user.passwd 密码路径
# rsync dome 服务所在的服务器
# user@172.16.3.18::server 需要同步备份的服务目录,指定 user 账户
# /opt/bak 本地机器路径
# 如果 /opt/bak 在 user@172.16.3.18::server 前,就是本地同步到server服务器上
# 如果 /ope/bak 在后 就是,server 同步备份到本地。

二、web-server 配置:

1、创建  rsync.pass 文件

[root@web-server1 ]# cat /etc/rsync.pass 
server1

2、安装 inotify-tools 

默认yum install 也可以源码进行。

3、创建 检测同步脚本

  ( inotifywait 循环检测文件  Rsync 从而达到实时同步 )

[root@web-server1 ]# cat rsync-inotify.sh 
#!/bin/bash
bak=192.168.2.6
# 备份服务器
src=/bakup/
# 备份目录
dst=server1
# 备份模块
user=bakup
启动账户
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pass $src $user@$bak::$dst
echo "${files} was rsynced ok ! " >>/tmp/rsync.log 2>&1
     done

4、Rsync 同步参数参考:

-v, --verbose    详细模式输出,详细显示数据传输备份情况
-z, --compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。局域网可以不用压缩
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于-rtopgDl
-r, --recursive(属于-a参数) 对子目录以递归模式,即目录下的所有目录都同样传输
-t, --times(属于-a参数) 保持文件时间属性信息
-o, --owner(属于-a参数) 保持文件属主信息
-p, --perms(属于-a参数) 保持文件权限
-g, --group(属于-a参数) 保持文件属组信息
-D, --devices (属于-a参数) 保持设备文件信息
-l, --links(属于-a参数) 保留软链接(小写字母l)
-P, --progress 显示同步的过程及传输时的进度等信息
-e, --rsh=COMMAND 使用的信道协议(remote shell),指定替代rsh的shell程序。例如:ssh
--exclude=PATTERN 指定排除不需要传输的文件信息
--exclude-from=file 文件名所在的目录文件,即可以实现排除多个文件
--bwlimit=RATE 实现数据传输过程限速传输,限制速率单位为kbytes

三、后台启动运行同步脚本

nohup & 启动后台运行

# nohup sh rsync-inotify.sh &

四、 Rsync 是单向同步的;客户端只保持与服务器端的镜像同步;客户端删除并不会影响服务端数据。

unison 可以达到双向镜像同步。

Rsync + inotify 实现文件实时同步的更多相关文章

  1. Rsync+inotify实现文件实时同步#附shell脚本

    强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...

  2. Centos 6.5配置rsync+inotify实现文件实时同步

    1.安装rsync(两台机器执行相同的步骤)yum install gcc yum install rsyncd xinetd -y因为rsync是由xinetd启动的,所以需要修改一个配置vim / ...

  3. rsync+inotify实现文件实时同步

    一.相关组件简介 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器 ...

  4. CentOS 6.5 rsync+inotify实现数据实时同步备份

    CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync    remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...

  5. sersync+rsync实现服务器文件实时同步

    sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...

  6. sersync基于rsync+inotify实现数据实时同步

    一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...

  7. rsync+sersync实现文件实时同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  8. rsync+inotify安装配置 实时同步文件

    安装 #安装inotify 工具 [root@localhost ~]# yum install inotify-tools -y 常用命令 [root@localhost ~]# inotifywa ...

  9. CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹

    简介:rsync是用来同步文件和文件夹的,inotify是用来实现监听变动而自动同步的 OS:Centos7.3 服务器端:172.16.13.157 客 户 端  :172.16.13.156 目  ...

随机推荐

  1. Navicat Premium 12 破解(MySQL、MariaDB、MongoDB、SQL Server、SQLite)

    打开注入到安装目录中的exe中 破解提示(还没好,继续看下去) 如果你安装的是中文版,选一下中文版(英文默认即可),获取一下key(名字和组织可以自定义) 打开Navicat,选择注册(第一次打开选注 ...

  2. [CTSC2010]珠宝商 SAM+后缀树+点分治

    [CTSC2010]珠宝商 不错的题目 看似无法做,n<=5e4,8s,根号算法? 暴力一: n^2,+SAM上找匹配点的right集合sz,失配了直接退出 暴力二: O(m) 统计过lca=x ...

  3. bzoj1398 Necklace

    关于最小表示法的模板题. 最小表示法:把一个字符串表示为它的的所有循环同构字符串中的字典序最小者. 直接参见代码中的函数getmin()获取精髓 #include <cstdio> #in ...

  4. Django 子程序

    在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该 ...

  5. win32: WM_PAINT 实现双缓冲缓图

    相关参考资料: GDI下实现双缓冲 - http://jingyan.baidu.com/article/e73e26c0f8df2424acb6a76e.html <Win32_19>用 ...

  6. C++11并发——多线程条件变量std::condition_variable(四)

    https://www.jianshu.com/p/a31d4fb5594f https://blog.csdn.net/y396397735/article/details/81272752 htt ...

  7. 第三十一篇-TextInputLayout(增强文本输入)的使用

    效果图: 密码使用的是增强文本输入类型,当密码长度小于6或者密码长度大于10的时候就会给出提示. main.xml 当添加TextInputLayout时,旁边会有一个下载符号,如果点不动,可以右键点 ...

  8. 利用SHAPEIT将vcf文件进行基因型(genotype)定相(phasing):查看两个突变是否来源于同一条链(染色体或父本或母本),two mutations carried by the same read

    首先,下载SHAPEIT. 按照里面的步骤安装完后,将vcf文件进行基因型定相,分四步走. 第一步,将vcf文件转化为plink二进制文件(.bed, .bim, .fam). 这一步需要用到GATK ...

  9. 计算基因上外显子碱基覆盖度(exon coverage depth):Samtool工具使用

    假设想要计算ATP1A4基因上的外显子碱基覆盖度 首先查询这个基因所有exon的起始和终止位置,查询链接:http://grch37.ensembl.org/Homo_sapiens/Transcri ...

  10. #ifndef HeaderName_h #define HeaderName_h #endif 使用详解(转)

    原文:#ifndef HeaderName_h #define HeaderName_h #endif 使用详解 想必很多人都看到过头文件中写有:#ifndef HeaderName_h       ...