rsync + inotify 实现实时同步
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 实现实时同步相关推荐
- rsync+inotify实现实时同步案例详解
rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...
- rsync + inotify 数据实时同步
一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...
- Rsync+inotify实现实时同步
如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...
- rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- 【Rsync + inotify】 实时同步远程服务器目录文件
文章目录 服务端 安装.配置 rsync 客户端 安装rsync 使用rsysnc 实现 实时同步 如何排错??? 服务端 安装.配置 rsync centos: # yum install rsyn ...
- rsync+inotify实现实时同步案例
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...
- Linux平台上文件同步——rsync+inotify之实时同步
1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...
- rsync+inotify高效实时同步
多服务器高效数据实时同步方案 实验环境 docker模拟两台centos7服务器 名称 ip 类型 centos_a 172.17.0.2 数据服务器 centos_b 172.17.0.3 备份服务 ...
- Rsync+Inotify+Sersync实时同步服务
目录 实时同步服务原理 实时同步服务部署 部署rsync守护进程 部署inotify监控服务 下载安装软件 熟悉命令使用 inotify企业应用 部署sersync同步服务 下载安装软件 编写配置文件 ...
最新文章
- pythonidle新建文件_(一)Python入门:04IDLE开发环境的使用-建立Python源文件
- php编写服务器端脚本程序,PHP脚本语言写的简单服务器程序
- 【结论】【dfs】费解的开关(joyoi-tyvj 1266)
- 边缘计算 ai_在边缘探索AI!
- 花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统
- SQL Server 加密层级
- 基于.NET实现数据挖掘--关联规则分析算法
- Android 内部存储安装apk文件实现
- jQuery使table表格隔行显示不同颜色
- arange函数--Numpy
- 详细图解MySQL(win7x64 5.7.16版本)下载、安装、配置与使用
- Asp.net自定义控件开发任我行(1)-笑傲江湖
- 苹果测试软件游戏,TestFlight苹果app
- 图数据库初探——6. Nebula Graph安装和简单使用
- java 504错误怎么解决_前端报504错误如何定位
- java中时间类型转换_java中时间类型转换
- 使用AudioRecorder录音
- SQL注入 基础概述及相关知识
- javascript——从「最被误解的语言」到「最流行的语言」
- 生成自定义时长的静音音频 | Java工具类