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数据同步相关推荐

  1. rsync + inotify数据同步

    rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可以解决对实时性要求不是很高的数据备份需求.如果实时性高的情况下,就会体现出他的不足,虽然可以利用任务计划来触发同步,但还是有 ...

  2. 对采用rsync+inotify数据同步方式进行健康检测

    一.问题背景 我们平时一般都采用 rsync + inotify 的方式进行网站数据实时同步,有时会遇到不能正常推送到某台服务器,而不能及时发现,因此有必要对数据同步进行健康检测. 二.技术原理 在源 ...

  3. centos6 rsync+inotify 数据同步

    一 前戏 #检测rsync是否已安装 rpm -qa rsync #如未按装,执行yum安装 yum install -y rsync #新建用户和目录并授权 useradd -M -s /sbin/ ...

  4. Linux的rsync远程数据同步工具

    Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件. rsync的好处是只同步两个文件不同的部分,相 ...

  5. ​inotify+rsync实时数据同步实践讲解17

    inotify+rsync实时数据同步实践讲解17说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.bl ...

  6. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步

    1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...

  7. Linux学习--rsync+inotify实现自动同步

    Linux学习–rsync+inotify实现自动同步 rsync remote synchronization(远程同步) rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分 ...

  8. 2-3-2 rsync+inotify备份同步数据

    RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Dav ...

  9. Centos7 下 配置 rsync 以及 rsync+inotify 实时同步

    Centos 7 下 配置 Rsync 以及 rsync+inotify 实时同步 rsync介绍 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支 持增量备份,保持链接和 ...

最新文章

  1. Pandas 基础 (3)—— 重新索引
  2. deepsort原理快速弄懂——时效比最高的
  3. 性能提高和支持IE 9的新的ExtJS发布版:4.02和3.4
  4. Android应用--QR的生成(二维码)
  5. 9岁印度女孩成为最年轻微软认证专家
  6. 盘点Chrome 灵魂插件!爱了爱了!
  7. ibm+x3650+m4+linux+raid驱动,IBM X3650M4阵列卡驱动下载
  8. SQL字符串中单引号与换行符的转义
  9. 各种系统扫描磁带驱动器的操作方法
  10. Android安全:So分析
  11. 【SSM】企业差旅管理系统-李兴华-专题视频课程
  12. 罗技G304等鼠标GHUB驱动配置
  13. 媲美微信的二维码识别库
  14. 将头像、文字和二维码三部分,合成一张宣传图片
  15. 分段线性函数线性化的Yalmip实现
  16. branca.colormap自带的json文件对颜色的定义
  17. 几个Sniffer(嗅探器)工具
  18. 每日一练 JS30天挑战 数组操作实例
  19. 鲸鸿动能流量变现服务中国大陆地区测试流程
  20. 求 objectdock 的 tray系统托盘插件

热门文章

  1. 单烤fpu和双烤_满载双烤不降频,火影地狱火X6散热实测
  2. 为什么要实施代码集体所有?
  3. 短信系统后台基础版本搭建服务器环境和功能说明
  4. RFID资产标签在档案管理中更智能
  5. ARMv8 MMU及Linux页表映射 LoyenWang
  6. syscall指令_linux syscall详细介绍
  7. 基于mdm9206 threadx_os的spi操作相关API介绍
  8. iMovie教程:如何给视频进行防抖动处理?
  9. 【ReID】AlignedReID: Surpassing Human-Level Performance in Person Re-Identification
  10. java-net-php-python-jsp生活用品购物系统计算机毕业设计程序