博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rsync + inotify 实现文件实时同步
阅读量:5269 次
发布时间:2019-06-14

本文共 2522 字,大约阅读时间需要 8 分钟。

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.5B: 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 = rootgid = rootuse chroot = no max connections = 100timeout = 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 文件

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

二、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/bashbak=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 可以达到双向镜像同步。

 

转载于:https://www.cnblogs.com/sharesdk/p/9774760.html

你可能感兴趣的文章
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
java语言与java技术
查看>>
NOIP2016提高A组五校联考2总结
查看>>
对其他团队的项目的意见或建议
查看>>
iOS 项目的编译速度提高
查看>>
机房收费系统——报表
查看>>
How to unshelve many shelves at same time
查看>>
table中checkbox选择多行
查看>>
动态链接库
查看>>
Magento开发文档(三):Magento控制器
查看>>
使用Docker官方的Django包【转】
查看>>
SuperSocket 学习
查看>>
给培训学校讲解ORM框架的课件
查看>>
此实现不是 Windows 平台 FIPS 验证的加密算法的一部分
查看>>
性能调优攻略
查看>>
线段树模板讲解
查看>>
ie6解决png图片透明问题
查看>>