rsync+inotify实现文件增量实时同步

  • 项目环境
  • 防火墙{项目环境,不是必要条件}
  • 项目需求
  • 一、rsync安装部署
    • 1.检查是否安装rsync
    • 2.测试系统rsync命令
    • 3.新建配置文件
      • 服务器A{133}
        • 创建或配置/etc/rsyncd.conf文件
        • 创建授权账户的密码文件
      • 服务器B{135}
        • 创建或配置/etc/rsyncd.conf文件
        • 创建授权账户的密码文件
    • 4.启动【占用端口873】
    • 5.关闭
      • 关闭不掉需要执行以下操作
    • 5.rsync命令介绍
  • 二、inotify-tools安装部署
  • 三、rsync+inotify实现文件增量实时同步
    • 脚本说明
    • 服务器A{133}
      • 配置文件inotify_back.sh
      • **设置脚本权限**
    • 脚本执行失败
    • 启动inotify

注解:rsync是数据同步,inotify是实时同步,不要搞混

项目环境

两个服务器:
服务器A: 100.102.3.133 源服务器 有目录 /data/site/
服务器b: 100.102.3.135 目标服务器 有目录 /home/application/site/

防火墙{项目环境,不是必要条件}

服务器b: 100.102.3.133
firewall-cmd --perman --zone=public --add-rich-rule=“rule family=“ipv4” source address=“100.102.3.135” accept”
firewall-cmd --reload
firewall-cmd --list-all

服务器A: 100.102.3.135
firewall-cmd --perman --zone=public --add-rich-rule=“rule family=“ipv4” source address=“100.102.3.133” accept”
firewall-cmd --reload
firewall-cmd --list-all

项目需求

1.将 100.102.3.133 中的 /data/site/ 下的文件 实时同步到100.102.3.135下边的 /home/application/site/ 文件夹中

3.开机自启动同步程序

4.记录同步数据的日志

一、rsync安装部署

1.检查是否安装rsync

rpm -qa|grep rsync   #默认自带的,所以没有写安装教程

2.测试系统rsync命令

在133上执行,会将135的site 同步到133/home/site/的文件中
rsync -avH --delete root@100.102.3.135:/home/application/site/ /home/site/ --log-file=/home/application/log/aa.log

3.新建配置文件

服务器A{133}

创建或配置/etc/rsyncd.conf文件

[root@VM-12-13-centos /]# vi /etc/rsyncd.conf    ###注意空格问题,否则启动不了
#进程对应的进程号文件
pid file = /var/run/rsyncd.pid
port = 873
address = 100.102.3.133
uid = root
gid = root
use chroot = yes
read only = no
hosts allow = 100.102.3.135
hosts deny=*
max connections = 10
motd file = /etc/rsyncd.motd
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[igiNet]
path = /home/application/site/
list=no
ignore errors
comment = igiNet
auth users = mngUser
secrets file = /etc/rsyncd.secret创建文件后赋权
[root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.conf

创建授权账户的密码文件

[root@VM-12-13-centos /]# vi /etc/rsyncd.pwd
netPwd
创建文件后赋权
[root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.pwd[root@VM-12-13-centos /]# vi /etc/rsyncd.secret
mngUser:mngPwd创建文件后赋权
[root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.secret

服务器B{135}

创建或配置/etc/rsyncd.conf文件

pid file = /var/run/rsyncd.pid
port = 873
address = 100.102.3.135
uid = root
gid = root
use chroot = yes
read only = no
hosts allow = 100.102.3.133
hosts deny=*
max connections = 10
motd file = /etc/rsyncd.motd
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[igiNet]
path = /home/application/site/
list=no
ignore errors
comment = igiNet
auth users = netUser
secrets file = /etc/rsyncd.secret

创建授权账户的密码文件

[root@VM-12-13-centos /]# vi /etc/rsyncd.pwd
mngPwd
创建文件后赋权
[root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.pwd[root@VM-12-13-centos /]# vi /etc/rsyncd.secret
netUser:netPwd
创建文件后赋权
[root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.secret

4.启动【占用端口873】

rsync --daemon --config=/etc/rsyncd.conf

查看是否启动成功

ps -ef|grep rsyncnetstat -ntap | grep rsync

5.关闭

kill -9 pid

关闭不掉需要执行以下操作

[root@VM-12-13-centos /] cd /var/run/[root@VM-12-13-centos /run] cat rsyncd.pid     ##查看pid文件[root@VM-12-13-centos /run] rm -rf rsyncd.pid    ##删除pid文件[root@VM-12-13-centos /run] rsync --daemon       ##服务正常启动

5.rsync命令介绍

本文章用了 avH

rsync [选项]  原始位置   目标位置
常用选项                说明
-r              递归模式,包含目录及子目录中的所有文件
-l              对于符号链接文件仍然复制为符号链接文件
-v              显示同步过程的详细信息
-z              在传输文件时进行压缩goD
-p              保留文件的权限标记
-a              归档模式,递归并保留对象属性,等同于-rlpt
-t              保留文件的时间标记
-g              保留文件的属组标记(仅超级用户使用)
-o              保留文件的属主标记(仅超级用户使用)
-H              保留硬链接文件
-A              保留ACL属性信息
-D              保留设备文件及其他特殊文件
--delete        删除目标位置有而原始位置没有的文件
--checksum      根据对象的校验和来决定是否跳过文件

二、inotify-tools安装部署

inotify-tools 下载路径

https://sourceforge.net/projects/inotify-tools/files/latest/download

# 解压inotify
tar -zxvf inotify-tools-3.13.tar.gz
# 进入解压目录
cd inotify-tools-3.13
# 编译并安装(prefix是指定安装目录,编译安装前需安装好GCC : yum install gcc)
./configure --prefix=/home/application/inotifor/
安装
make && make install

三、rsync+inotify实现文件增量实时同步

脚本说明

1.【服务器A】和【服务器B】是一样的脚本,dstdir上边rsyncd.conf配置的参数,rsyncuser 用户 rsyncpassdir用户的密码文件。

2.如果单项同步【服务器A】-【服务器B】是不需要再【服务器B】上编辑脚本的。

3.【服务器A】,【服务器B】相互同步,可以实现附件共享的作用,和(共享磁盘)的作用是一致的。

srcdir 需要同步的文件路径,路径最后面必须加入 / 否则会导致循环同步
dstdir 目标服务器的的模块名称,该名称即rsyncd.conf文件中[ ] 的内容
excludedir 需要排除的文件列表,每一行是一条记录
rsyncuser 同步使用的用户名
rsyncpassdir 同步使用的用户的密码
dstip 目标ip,多个ip以空格区分

服务器A{133}

配置文件inotify_back.sh

#!/bin/sh
srcdir=/data/site/
dstdir=igiNet
rsyncuser=netUser
rsyncpassdir=/etc/rsyncd.pwd
dstip="100.102.3.135"
for ip in $dstipdorsync -avH --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirdone/home/application/inotifor/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read filedofor ip in $dstipdorsync -avH --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirecho " ${file} was rsynced" >> /tmp/rsync.log 2>&1donedone

设置脚本权限

chmod U+X  inotify_back.sh

脚本执行失败

sed -i 's/\r$//' inotify_back.sh

启动inotify

nohup ./inotify_back.sh 2>&1 </dev/null | cat >> log.out &

rsync+inotify实现文件增量实时同步相关推荐

  1. rsync+inotify实现文件时时单项同步

    源服务器          10.13.114.16 目标服务器        10.13.114.17 目的:实现源服务器10.13.114.16 /home/admin/www/文件夹文件实时同步 ...

  2. rsync+inotify-tools实现文件的实时同步

    rsync简介: Rsync 是一个远程数据同步工具,使用所谓的"Rsync 演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传 ...

  3. linux 文件双向同步,Linux文件双向实时同步rsync

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 echo"/usr/sersync/sersync2-d-o/usr/sersync/confxml.xm ...

  4. sersync + rsync 实现文件的实时同步

    这里有一点要特别注意了,就是在你完成备份之后,先不要把本地的文件都给删除了,先把服务停了之后再删除文件, 因为你已删除,检查到两边不一致,他又会把备份端给删除了.所以特别得注意了.这里吃过一次亏. 还 ...

  5. 利用unison+inotify 实现数据双向实时同步

    利用unison+inotify 实现数据双向实时同步 环境:Centos 6.5 64位 server1 :192.168.1.201 server2 :192.168.1.250 需求软件:oca ...

  6. Sersync+Rsync 增量实时同步

    准备环境: rsync服务器:172.16.3.21 sersync2服务器:172.16.3.23 一. rsync服务器 先把原来的rsync包删掉yum remove rsync-2.6.8-3 ...

  7. rsync与inotify集成实现数据实时同步更新

    本文转载:http://ilanni.blog.51cto.com/526870/1605200 把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.r ...

  8. 通过rsync+inotify实现数据的实时备份

    在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar ...

  9. rsync+inotify实现数据的实时备份

    rsync+intofy实现数据的实时备份 一.环境 1.主机信息: server node0  192.168.32.30  /var/www/html client node1  192.168. ...

最新文章

  1. dede 怎样调用其它栏目的文章或者缩略图列表且有分页效果?
  2. DRF——路由控制器
  3. web项目发布时出现Deployment failure on Tomcat 7.x.
  4. 关于ajax 1.0的一个问题?
  5. Python中的协程
  6. shell 循环控制语句
  7. java主函数_《左手 Java 右手 Python 》之 Java 的安装与初识(1)
  8. Spring_day04--课程安排_回顾SSH框架知识点_SSH框架整合思想
  9. UNIX 网络编程课程目录
  10. 金蝶显示服务器连接超时,金蝶连接云服务器超时
  11. mysql中rownumber用法_MySQL中row_number的实现
  12. 学校计算机比赛策划,学校计算机技能比赛活动策划方案
  13. dell服务器更换硬盘raid,DELL T620服务器硬盘坏,更换硬盘做RAID同步
  14. RuntimeError: xxx.pth is a zip archive (did you mean to use torch.jit.load()?)
  15. echarts地图生成
  16. java javascript数组_浅谈javascript和java中的数组
  17. 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文
  18. vue中xe-utils的强大
  19. 微信chooseImage,getLocalImgData调取相机拍照,获取图片base64
  20. iview实现table的可编辑

热门文章

  1. thinksnsv4 php7,社交系统ThinkSNS+安装部署演示
  2. pytorch--切断梯度的方法
  3. 牛客网习题集 - Wannafly挑战赛13- D applese生日
  4. 腾讯云注册与实名图文教程
  5. ionic4学习笔记11-某东项目热门商品展示
  6. 除了Micrsoft Office和WPS,有没有免费好用的office软件?
  7. LeetCode第 310 场周赛
  8. 说真的,喜欢偶尔这样的激情解说!
  9. mapi java_[Security:090504]Certificate chain received from mapi.alipay.com
  10. 科普了解高级编程语言的发展历程