rsync + inotify 实现实时同步

rsync 简介

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操作系统平台。
Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。
rsync监听端口:873
rsync运行模式:C/S

#安装 rsync
[root@localhost ~]# yum -y install rsync

1.rsync 三种模式

本地模式

1.单文件数据同步
[root@localhost ~]# rsync /etc/hosts /opt
2.目录同步
[root@localhost ~]#rsync -avz /opt/ /mut ("/" 代表目录下所有文件,不包括目录本身)
3.--delete同步
[root@localhost ~]# rsync -avz /opt/ /mnt --delete (会将opt目录下的文件和mnt目录对比,会将mnt目录中opt不存在的文件删除,)

远程模式

1.[root@localhost ~]# rsync -avz --bwlimit=100 --delete /backup/ 172.16.1.12:/backup
#--bwlimit (限速)

守护进程模式

#服务端设置
[root@localhost ~]#cat cat intify.sh
uid  =  rsync
gid  =  rsync
use  chroot  =  no         (一个安全机制)
max  connections  =  200   (最大支持200个客户端向我推送)
timeout  =  300            (如果300毫秒都没给我推送我就放弃他)
pid  file  =  /var/run/rsyncd.pid     (pid 文件的位置,每个进程都有一个保存了pid号的文件)
lock  file   =   /var/run/rsync.lock  (进程锁   ,如果有多个客户端同时向我推送,按照先后顺序一个一个来晚来的锁住排队)
log  file  =  /var/log/rsyncd.log      (程序日志的位置)[ backup ]
path  =  /backup       (接受到数据保存在这个路径下)
ignore   errors        (如果出现错误     忽略)
read  only  =  false   (权限   只读是否,可以读写)
list  =  false         (禁止客户端以远程列表的方式查看我备份服务器上的东西)
hosts   allow   =   192.168.100.0/24  (允许这个网段的客户端的推送)
hosts  deny  =  0.0.0.0/32            (拒绝谁推送)
auth  users  =  rsync_backup          (虚拟用户    为了做验证的)
secrets  file  =  /etc/rsync.password  (rsync认可账号密码存放路径)#创建程序用户,创建密码
[root@localhost ~]#useradd -< -s /sbin/nologin rsync
[root@localhost ~]#mkdir /backup
[root@localhost ~]#chown rsync /backup
[root@localhost ~]#echo "rsync_backup:123123" > /etc/rsync.password ; chomd 600 /etc/rsync.password#客户端设置
[root@localhost ~]#echo "rsync_backup:123123" > /etc/rsync.password;chomd 600 /etc/rsync.password
#客户端推送
[root@localhost ~]#rsync -avz /backup/ rsync_backup@192.168.100.1::backup --password-file=/etc/rsync.password# ::backup 表示服务端配置文件所设置的模块,进行引用
# --password-file (密码本存放路径)

详细命令

-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致

inotfy 简介

Inotify 是一种强大的、异步的文件系统事件监控机制,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况

详细参数

-r           #递归查询目录
-q           #打印很少的信息,仅仅打印监控时间的信息
-m           #始终保持事件监听状态
--exclude    #排除文件或者目录时,不许分大小写
--format     #打印使用指定的输出类似格式字符串
-e           #通过此参数可以指定需要监控的时间,如下一个列表所示
access       #文件或者目录被读取
modify       #文件或者目录内容被修改
attrib       #文件或者目录属性被改变
close        #文件或者目录封闭,无论读写模式
open         #文件或者目录被打开
moved_to     #文件或者目录被移动到另一个目录
move         #文件或者目录被移动到里一个目录或者从一个目录移动到当前目录
create       #文件或者目录被创建到当前目录
umount       #文件系统被卸载
delete       #文件或者目录被删除--timefmt     指定时间输出的格式

安装

[root@localhost ~]#yum -y install epel-release
[root@localhost ~]#yum -y install inotify-tools

两台主机同步

ip service
192.168.100.150 rsync service
192.168.100.151 rsync client+inotify

192.168.100.150 操作

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl stop NetworkManager
[root@localhost ~]#systemctl disable firewalld
[root@localhost ~]#systemctl disable NetworkManager[root@localhost ~]#yum -y install rsync
[root@localhost ~]#vim /etc/rsyncd.conf
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/log/rsyncd.log
[data]
path = /backup    #备份路径
comment = my data #给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
ignore errors     #跳过错误
read only = no    #读
write only = no   #写
hosts allow = 192.168.2.7 #备份源ip
list = false
auth users = rsync_user  #用户
secrets file = /etc/rsync.password #密码路径#创建认证用户密码文件,修改文件权限
[root@localhost ~]#echo "rsync_user:123456" > /etc/rsync.password
[root@localhost ~]#chmod 600 /etc/rsync.password#创建备份目录
[root@localhost ~]#mkdir /backup#开机自启动
[root@localhost ~]#systemctl start rsyncd
[root@localhost ~]#systemctl enable resyncd#检查端口
[root@localhost ~]#ss -lntp | grep 873

192.168.100.151 操作

[root@localhost ~]#yum -y install epel-release
[root@localhost ~]#yum -y insatll inotify-tools rsync#创建密码文件
[root@localhost ~]#echo "123456" > /etc/rsync.password
[root@localhost ~]#chmod 600 /etc/rsync.password#编辑监控脚本
[root@localhost ~]#cat intify.sh
#!/bin/bash
ip=192.168.100.150   #备份端ip
src=/data            #数据目录
dst=data             #模块名
user=rsync_user      #用户
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done#创建备份目录
[root@localhost ~]#mkdir /data
[root@localhost ~]#sh inotify.sh#创建文件查看备份端是否同步
[root@localhost ~]#mkdir -P /data/wangyulong
[root@localhost ~]#touch /data/1111
[root@localhost ~]#touch /data/2222

rsync + inotify 实现实时同步相关推荐

  1. rsync+inotify实现实时同步案例详解

    rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...

  2. rsync + inotify 数据实时同步

    一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...

  3. Rsync+inotify实现实时同步

    如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...

  4. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  5. 【Rsync + inotify】 实时同步远程服务器目录文件

    文章目录 服务端 安装.配置 rsync 客户端 安装rsync 使用rsysnc 实现 实时同步 如何排错??? 服务端 安装.配置 rsync centos: # yum install rsyn ...

  6. rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...

  7. Linux平台上文件同步——rsync+inotify之实时同步

    1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...

  8. rsync+inotify高效实时同步

    多服务器高效数据实时同步方案 实验环境 docker模拟两台centos7服务器 名称 ip 类型 centos_a 172.17.0.2 数据服务器 centos_b 172.17.0.3 备份服务 ...

  9. Rsync+Inotify+Sersync实时同步服务

    目录 实时同步服务原理 实时同步服务部署 部署rsync守护进程 部署inotify监控服务 下载安装软件 熟悉命令使用 inotify企业应用 部署sersync同步服务 下载安装软件 编写配置文件 ...

最新文章

  1. pythonidle新建文件_(一)Python入门:04IDLE开发环境的使用-建立Python源文件
  2. php编写服务器端脚本程序,PHP脚本语言写的简单服务器程序
  3. 【结论】【dfs】费解的开关(joyoi-tyvj 1266)
  4. 边缘计算 ai_在边缘探索AI!
  5. 花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统
  6. SQL Server 加密层级
  7. 基于.NET实现数据挖掘--关联规则分析算法
  8. Android 内部存储安装apk文件实现
  9. jQuery使table表格隔行显示不同颜色
  10. arange函数--Numpy
  11. 详细图解MySQL(win7x64 5.7.16版本)下载、安装、配置与使用
  12. Asp.net自定义控件开发任我行(1)-笑傲江湖
  13. 苹果测试软件游戏,TestFlight苹果app
  14. 图数据库初探——6. Nebula Graph安装和简单使用
  15. java 504错误怎么解决_前端报504错误如何定位
  16. java中时间类型转换_java中时间类型转换
  17. 使用AudioRecorder录音
  18. SQL注入 基础概述及相关知识
  19. javascript——从「最被误解的语言」到「最流行的语言」
  20. 生成自定义时长的静音音频 | Java工具类

热门文章

  1. golang web框架 beego 学习 (七)json转数组
  2. php代码怎么注释符号,Php入门教程之PHP注释符号和格式
  3. Redis基础类型ZSet增删改查(带Java库源码)
  4. 【高并发项目实战】千万级购物车系统缓存架构方案
  5. 淘宝标题,标题权重,何时优化标题,修改标题流量下滑,标题优化的技巧方法
  6. 2021最新十大优质蓝牙耳机推荐,高音质品牌推荐不踩雷
  7. win11+显卡驱动+CUDA+CUDNN对应版本安装
  8. 传感器网络与无线自组网的区别
  9. 万方数据基于PaddleNLP的文献检索系统实践
  10. npm安装依赖相关命令