Linux之Rsync+inotify数据同步
rsync远程同步
rsync(Remote Sync): 是一款开源,快速,多功能的可实现本地或远程主机数据同步与增量备份的优秀工具。(数据同步与备份的工具)可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步,远程备份等功能 。
在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。
提示:传统的cp、scp、tar等工具每次均为完全备份,而rsync除了完整拷贝,还具备增量拷贝的功能,因此更加灵活。
rsync特性
1)支持拷贝特殊文件如链接,设备文件等
2)可以有排除指定文件或目录同步的功能
3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。
4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高
生产场景
1)借助cron定时任务+rsync把所有客户服务器数据同步到备份服务器 2)针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案 3)通过本地打包备份,然后rsync结合inotify(监控)应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果 4)定期将IDC机房的数据备份公司的内部服务器,防止机房地震及火灾问题 导致数据丢失 实时同步,解决存储服务器的单点问题
rsync总结
rsync就是会同步指定的两端目录之间的数据,这个数据可以是特殊的数据。同步之前就先进行两端的数据的比对,只会同步两者之间不同的部分,并保留文件原本的属性。并且支持匿名的方式进行同步传输。所以rsync在备份、同步上就会较为快速。
软件安装
rsync官方地址: rsync
安装方式:源码安装、二进制RPM安装
#安装rsync [root@master ~]# yum -y install rsync
本地同步语法
命令格式1:rsync 选项… 本地目录A 本地目录B #同步整个目录
命令格式2:rsync 选项… 本地目录A/ 本地目录B #只同步目录下的数据
常用选项
选项 | 作用 |
---|---|
-n | 测试同步过程,不做实际修改 |
--delete | 删除目标目录下多余的文档 |
-v | 显示详细操作信息 |
-z | 传输过程中启用压缩/解压缩 |
-a | 递归同步,包含目录/子目录及所有文件、保留符号链接文件、保留文件权限、时间标记、保留文件的属主/属组标记、保留设备文件及其他特殊文件 |
本地同步
#在本地创建2个目录使用rsync实现数据同步 [root@master ~]# mkdir /test1 /opt/test2 #将/test1目录同步至/opt/test2目录下(同步整个目录) [root@master ~]# rsync -avz /test1 /opt/test2 sending incremental file list #发送增量文件列表 test1/ sent 59 bytes received 20 bytes 158.00 bytes/sec total size is 0 speedup is 0.00 #sent:发送字节59 #received:接收字节20 #158.00:字节/秒 #total:总大小为0 #speedup is:加速值为0.00 #查看目录是否同步成功 [root@master ~]# ls /opt/test2/ test1 #在/test1目录下创建测试文件 [root@master ~]# touch /test1/xx.txt #同步/test1/目录下的数据至/opt/test2目录下 [root@master ~]# rm -rf /opt/test2/* [root@master ~]# rsync -avz /test1/ /opt/test2 #查看数据是否同步 [root@master ~]# ls /opt/test2 xx.txt #在/test1目录下创建新文件验证是否只同步新增加的数据 [root@master ~]# touch /test1/abc.txt [root@master ~]# ls /test1 abc.txt xx.txt #执行同步 [root@master ~]# rsync -avz /test1/ /opt/test2 sending incremental file list ./ abc.txt #只同步了新增加的文件 sent 130 bytes received 38 bytes 336.00 bytes/sec total size is 0 speedup is 0.00 [root@master ~]# ls /opt/test2 abc.txt xx.txt #向xx.txt文件增加内容验证同步 [root@master ~]# echo xxoo > /test1/xx.txt [root@master ~]# cat /test1/xx.txt xxoo #执行同步 [root@master ~]# rsync -avz /test1/ /opt/test2 sending incremental file list xx.txt #只同步变化的文件 sent 135 bytes received 35 bytes 340.00 bytes/sec total size is 5 speedup is 0.03 [root@master ~]# cat /opt/test2/xx.txt xxoo #在执行同步时,如果目标目录下的内容发生变化,源目录不会跟着改变 [root@master ~]# cd /opt/test2 [root@master test2]# touch test{1..100} #执行同步操作 [root@master test2]# rsync -avz /test1/ /opt/test2 sending incremental file list ./ #没有任何的变化,既没同步任何的数据 sent 93 bytes received 19 bytes 224.00 bytes/sec total size is 5 speedup is 0.04 #执行同步时,删除目标目录下多余的文件 [root@master test2]# rsync -avz --delete /test1/ /opt/test2 #查看test2目录 [root@master test2]# ls abc.txt xx.txt
远程同步语法
命令格式1:rsync 本地目录 用户名@对方IP地址:/目标目录 #同步源目录本身
命令格式2:rsync 本地目录/ 用户名@对方IP地址:/目标目录 #同步源目录下内容
远程同步
#客户端主机安装rsync程序 [root@client ~]# yum -y install rsync #将本地主机/test1目录下内容同步到其他主机 [root@master ~]# rsync -avz /test1/ root@192.168.0.28:/opt root@192.168.0.28's password: sending incremental file list ./ abc.txt xx.txt sent 174 bytes received 57 bytes 154.00 bytes/sec total size is 5 speedup is 0.02 #远程主机查看是否同步成功 [root@client ~]# ls /opt abc.txt xx.txt [root@client ~]# cat /opt/xx.txt xxoo #在本地主机/test1目录下创建文件执行同步 [root@master ~]# touch /test1/test{1..10} [root@master ~]# ls /test1 abc.txt test10 test3 test5 test7 test9 test1 test2 test4 test6 test8 xx.txt [root@master ~]# rsync -avz /test1/ root@192.168.0.28:/opt root@192.168.0.28's password: sending incremental file list ./ test1 test10 test2 test3 test4 test5 test6 test7 test8 test9 #远程主机验证是否同步成功 [root@client ~]# ls /opt abc.txt test10 test3 test5 test7 test9 test1 test2 test4 test6 test8 xx.txt
rsync+inotify实时同步
inotify 是Linux内核用于通知用户空间的程序文件系统变化的机制,如文件增加、删除等事件可以立刻让用户得知。
inotify官方地址:inotify-tools - Browse Files at SourceForge.net
环境前准备
#配置同步主机之间ssh免密登录 [root@master ~]# ssh-keygen [root@master ~]# ssh-copy-id root@192.168.0.28 [root@master ~]# ssh 192.168.0.28 [root@client ~]# exit
源码安装inotify
#安装inotify依赖包(gcc) [root@master ~]# yum -y install gcc #解压源码包 [root@master ~]# tar -xf inotify-tools.tar.gz 、 [root@master ~]# cd tools/ [root@master tools]# ls inotify-tools-3.13.tar.gz other [root@master tools]# tar -xf inotify-tools-3.13.tar.gz [root@master tools]# cd inotify-tools-3.13 [root@test inotify-tools-3.13]# ./configure --prefix=/usr/local/inotify #指定安装路径 [root@test inotify-tools-3.13]# make [root@test inotify-tools-3.13]# make install [root@master ~]# ls /usr/local/inotify/ bin include lib share [root@master ~]# ls /usr/local/inotify/bin inotifywait(命令) inotifywatch #将命令程序链接到PATH路径下,方便后期的使用 [root@master ~]# ln -s /usr/local/inotify/bin/inotifywait /sbin
inotify使用方式
命令格式:inotify 选项 目标文件
常用选项
选项 | 功能 |
---|---|
-m | 持续监控,捕获一个事件后不退出 |
-r | 递归监控,包括子目录 |
-q | 减少屏幕输出信息 |
-e | 指定监控的:modify(修改),create(创建),delete(删除),attrib(权限) |
配置实时监控
#监控本机/test1目录 [root@master ~]# vim rsync.sh #!/bin/bash while inotifywait -rq -e modify,create,delete,attrib /test1/ dorsync -avz --delete /test1/ root@192.168.0.28:/opt done #实现从本地到远程的Web目录推送 #源目标:/var/www/html #参考脚本 #!/bin/bash FROM_DIR=“/var/www/html/” RSYNC_CMD=“rsync –za --delete $FROM_DIR root@192.168.0.211:/var/www/html” while inotify –rqq –e modify,move,create,delete,attrib $FROM_DIR #q不显示输出 do $RSYNC_CMD done &
Linux之Rsync+inotify数据同步相关推荐
- rsync + inotify数据同步
rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可以解决对实时性要求不是很高的数据备份需求.如果实时性高的情况下,就会体现出他的不足,虽然可以利用任务计划来触发同步,但还是有 ...
- 对采用rsync+inotify数据同步方式进行健康检测
一.问题背景 我们平时一般都采用 rsync + inotify 的方式进行网站数据实时同步,有时会遇到不能正常推送到某台服务器,而不能及时发现,因此有必要对数据同步进行健康检测. 二.技术原理 在源 ...
- centos6 rsync+inotify 数据同步
一 前戏 #检测rsync是否已安装 rpm -qa rsync #如未按装,执行yum安装 yum install -y rsync #新建用户和目录并授权 useradd -M -s /sbin/ ...
- Linux的rsync远程数据同步工具
Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件. rsync的好处是只同步两个文件不同的部分,相 ...
- inotify+rsync实时数据同步实践讲解17
inotify+rsync实时数据同步实践讲解17说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.bl ...
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...
- Linux学习--rsync+inotify实现自动同步
Linux学习–rsync+inotify实现自动同步 rsync remote synchronization(远程同步) rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分 ...
- 2-3-2 rsync+inotify备份同步数据
RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Dav ...
- Centos7 下 配置 rsync 以及 rsync+inotify 实时同步
Centos 7 下 配置 Rsync 以及 rsync+inotify 实时同步 rsync介绍 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支 持增量备份,保持链接和 ...
最新文章
- Pandas 基础 (3)—— 重新索引
- deepsort原理快速弄懂——时效比最高的
- 性能提高和支持IE 9的新的ExtJS发布版:4.02和3.4
- Android应用--QR的生成(二维码)
- 9岁印度女孩成为最年轻微软认证专家
- 盘点Chrome 灵魂插件!爱了爱了!
- ibm+x3650+m4+linux+raid驱动,IBM X3650M4阵列卡驱动下载
- SQL字符串中单引号与换行符的转义
- 各种系统扫描磁带驱动器的操作方法
- Android安全:So分析
- 【SSM】企业差旅管理系统-李兴华-专题视频课程
- 罗技G304等鼠标GHUB驱动配置
- 媲美微信的二维码识别库
- 将头像、文字和二维码三部分,合成一张宣传图片
- 分段线性函数线性化的Yalmip实现
- branca.colormap自带的json文件对颜色的定义
- 几个Sniffer(嗅探器)工具
- 每日一练 JS30天挑战 数组操作实例
- 鲸鸿动能流量变现服务中国大陆地区测试流程
- 求 objectdock 的 tray系统托盘插件
热门文章
- 单烤fpu和双烤_满载双烤不降频,火影地狱火X6散热实测
- 为什么要实施代码集体所有?
- 短信系统后台基础版本搭建服务器环境和功能说明
- RFID资产标签在档案管理中更智能
- ARMv8 MMU及Linux页表映射 LoyenWang
- syscall指令_linux syscall详细介绍
- 基于mdm9206 threadx_os的spi操作相关API介绍
- iMovie教程:如何给视频进行防抖动处理?
- 【ReID】AlignedReID: Surpassing Human-Level Performance in Person Re-Identification
- java-net-php-python-jsp生活用品购物系统计算机毕业设计程序