一、rsync

(一)、rsync简介

rsync是Linux和Unix下一款远程数据同步工具,rsync第一次会把数据全量同步到远端服务器,之后会对比两个文件的不同,传输差异文件,实现增量同步
优点:安全性高、备份迅速,使用同步算法,只同步有变化的文件 备份文件保持原有文件的属性软硬连接,且支持排除备份等
缺点:在数据同步之前需要扫描所有的文件进行对比才能进行差异化同步,如果同步文件达到百万级或者千万级,扫描文件同步将变得非常的耗时,降低了同步的效率

(二)、rsync基本命令介绍(1V4)

rsync是一个强大的命令,他可以同时实现复制,删除,查看,远程同步等功能
1. rsync==cp
root@nfs01 test]# rsync -a aa.txt aa.txt.bak
[root@nfs01 test]# ls
aa.txt aa.txt.bak

2、 rsync==scp
[root@nfs01 test]# rsync -rp /test/ 10.0.0.41:/test/
root@10.0.0.41's password:

3rsync==rm

[root@nfs01 test]# mkdir /null
[root@nfs01 test]# rsync -r --delete /null/ /test/
[root@nfs01 test]# ls
4rsync==ls
[root@nfs01 test]# rsync /etc/hosts
-rw-r--r-- 352 2018/09/15 01:51:11 hosts

(三)、rsync工作方式

1、本地备份方式

语法:Local: rsync [OPTION...] SRC... [DEST]

练习:[root@nfs01 test]# rsync -a /etc/hosts /tmp/hosts.bak
   [root@nfs01 test]# ll /tmp/hosts.bak
   -rw-r--r-- 1 root root 352 Sep 15 01:51 /tmp/hosts.bak

2、远程数据备份方式

语法:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

练习:[root@nfs01 test]# rsync -avz /backup/ root@10.0.0.41:/backup/
root@10.0.0.41's password:
sending incremental file list
./

sent 1703 bytes received 333 bytes 370.18 bytes/sec
total size is 1622 speedup is 0.80

  • 小提示:如果不指定user信息表示以当前用户进行登陆

3、守护进程传输模式

语法:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

  • 小提示:这里的SRC与远程传输方式不同,这里的指的是模块信息

    守护进程方式部署流程

    一、服务端部署流程
    1)检查软件是否安装
    [root@backup ~]# rpm -qa rsync
    rsync-3.0.6-12.el6.x86_64
    2)编写配置文件(注意默认是没有的,需要手动创建)

    [root@backup ~]# vim /etc/rsyncd.conf
    #rsync_config
    #created by HQ at 2017
    ##rsyncd.conf start##
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    hosts deny = 0.0.0.0/32
    auth users = jiang
    secrets file = /etc/rsync.password
    [backup]
    comment = "practice and use"
    path = /backup
    ~
    -- INSERT --

配置参数详细说明

配置参数 说明
uid = rsync 指定rsync服务运行的时候,向磁盘进行读取和写入操作的操作者
gid = rsync 指定rsync服务运行的时候,向磁盘进行读取和写入操作的操作组
use chroot = no 进行数据同步存储时,安全相关参数,默认内网进行数据同步,可以关闭
max connections = 200 定义向备份服务器进行数据存储的并发连接数
timeout = 300 定义与备份服务器建立的网络连接,在多长时间没有数据传输时,就释放连接
pid file = /var/run/rsyncd.pid 服务程序运行时,会将进程的pid信息存储到一个指定的pid文件中
lock file = /var/run/rsync.lock 定义锁文件,主要用于配合max connections 参数,当达到最大连接就禁止继续访问
log file = /var/log/rsyncd.log 定义服务的日志文件保存路径信息
[backup] 指定备份目录的模块名称信息
path = /backup 指定数据进行备份的目录信息
ignore errors 在进行数据备份传输过程过程中,忽略一些I/O产生的传输错误
list = false 确认是否可以将服务配置的模块信息,在客户端可以查看显示
hosts allow = 172.16.1.0/24 设置备份目录允许进行网络数据备份的主机地址或网段信息,即设置白名单
hosts deny = 0.0.0.0/32 设置备份目录禁止进行网络数据备份的主机地址或网段信息,即设置黑名单
auth users = jiang 指定访问备份数据目录的认证用户信息,为虚拟定义的用户,不需要进行创建
secrets file = /etc/rsync.password 设置访问备份数据目录进行认证用户的密码文件信息,会在文件中设置认证用户密码信息

3)、创建备份服务管理用户
useradd rsync -M -s /sbin/nologin
4)创建备份目录
mkdir /backup
chown -R rsync.rsync /backup
5)创建认证文件
echo "jiang:jiang123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
6)启动rsync服务
rsync --daemon
二、客户端部署流程
1)确认软件是否安装
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)创建认证密码文件
echo "jiang" >>/etc/rsync.password
chmod 600 /etc/rsync.password
3)、进行数据备份测试
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts

二、利用inotify实现实时同步

(一)、inotify简介

Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。要使用 inotify,必须具备一台带有 2.6.13 或更新内核的 Linux 机器

(二)、实时同步概念

一、为什么要使用实时同步

  • 因为定时任务有缺陷,一分钟以内的数据无法进行同步,容易造成数据丢失

    二、实时同步的工作原理

    1、 创建要存储数据的目录
    2、 利用实时同步的软件监控我们进行备份的数据目录
    3、 利用rsync服务进行数据推送传输备份

    (三)、实时同步软件部署

    1)、安装inotify软件
    yum install -y inotify-tools
    2)、编写实时同步的脚本
    #!/bin/bash
    ####################
    inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|\
    while read line
    do
    rsync -az --delete /data/ jiang@172.16.1.41::backup --password-file=/etc/rsync.password
    done
    说明:在编写同步脚本之前需要保证rsyc守护进程方式同步正常

    (四)、inotify命令说明

    inotifywait
    -m|--monitor 始终保持事件监听状态
    -r 进行递归监控
    -q|--quiet 将无用的输出信息,不进行显示
    --timefmt <fmt> 设定日期的格式
    man strftime 获取更多时间参数信息
    --format <fmt> 命令执行过程中,输出的信息格式
    -e 指定监控的事件信息
    man inotifywait 查看所有参数说明和所有可以监控的事件信息
    总结主要用到的事件信息:
    create创建、delete删除、moved_to移入、close_write修改
    PS:因为rsync是单线程方式监控目录,所以如果文件数量达到百万级会降低实时同步的效率,这时候我们可以考虑使用sersync+rsync的方式进行实时同步,sersync是国内开发者开发的一款软件,使用c++ 编写而成,他的优点:多线程方式工作,提高同步效率,使用方便,配置简单,感兴趣的小伙伴可以自行研究

转载于:https://blog.51cto.com/13268236/2289753

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

  1. rsync+inotify 实现数据实时同步

    Rsync (Rmote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动 ...

  2. Centos7.x Rsync+Inotify实现数据实时同步

    一.概述 rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两 ...

  3. Linux下Rsync+Inotify-tools实现数据实时同步

    说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.osyun ...

  4. Linux下Rsync+sersync实现数据实时同步

    一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除 ...

  5. Centos rsync + notify 实现数据实时同步

    目录 rsync + notify 实现数据实时同步 一.简介 二.原理 三.实验环境 四.实验预期 五.准备工作 六.服务配置 目标服务器配置 源服务器配置 七.实现inodify实时触发rsync ...

  6. linux云计算架构师:Rsync+sersync实现数据实时同步

    全套学习资料移步至公众号[学神来啦]更多学习资料添加扣扣资源群:661308959 本节所讲内容:   2.1  Rsync概述   2.2  Rsync服务安装   2.3  Rsync+sersy ...

  7. rsync与inotify实现数据实时同步

    Rsync与Inotify 单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rs ...

  8. Rsync+Inotify-tools实现数据实时同步

    inotify是一种强大的,细粒度的,异步文件系统时间监控机制,它可以替代crond实现与rsync的触发式文件同步,从而监控文件系统中添加,删除,修改,移动等细粒事件,从LINUX 2.6.13起, ...

  9. linux下通过rsync+inotify 实现数据实时备份(远程容灾备份系统)

    本文出处参考:http://www.jbxue.com/article/10493.html 一.安装步骤(服务器端192.168.0.5) 1) 安装rsync 点击下载rsync-3.0.9.ta ...

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

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

最新文章

  1. 通常我们将python语言程序保存在一个后缀_ACAA网络设计师模拟题
  2. [IE技巧] IE Security Zone 的注册表设置
  3. python画-python如何画出漂亮的地图?
  4. Openstack虚机实例状态错误手工恢复vm_state:error
  5. 第十七讲 利用傅里叶级数求特解
  6. pythontcp服务器如何关闭阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信...
  7. hadoop是什么_Hadoop精华问答 | hadoop能干什么?
  8. 一份某品牌天猫专卖店运营计划书
  9. 解析常见网络钓鱼攻击方法
  10. 怎样修改linux(虚拟机)系统开机密码
  11. 计算机金融专业美国学校排名,美国金融专业都有哪些种类?
  12. 程序员是这样炼成的(2)-选择成熟的柿子还是生柿子
  13. 3-7 pandas数据的读取与存储
  14. 爬虫学习笔记(二)http请求详解
  15. 线控转向 四轮转向控制 4WIS CarSim与Simulink联合
  16. Python零基础入门(五)
  17. 21天学通Java学习笔记-Day01
  18. 硬盘的扇面、磁道、扇区
  19. 工欲善其事,必利其器
  20. android设置图片不可点击,Android 点击图片设置相关的响应事件

热门文章

  1. Atitit 文档全文索引的索引种类 用于文本数据挖掘 搜索 数据分析 目录 1.1. Txt摘要索引。。 1 1.2. File placeholder 索引 1 1.3. Lucence索引 1
  2. Atitit 如何设置与安放知识的trap陷阱  知识聚合 rss url聚合工具 以及与trap的对比
  3. Atitit. 获取cpu占有率的 java c# .net php node.js的实现
  4. Atitit。Js调用后台语言 java c#  php swing android  swt的方法大总结
  5. Atitit  atiMail atiDns新特性 v2  q39
  6. Rust:String::from()、 into()、to_string()哪个效率高?
  7. 贝莱德集团CEO劳伦斯·芬克: 伟大的公司,都有一个长期战略
  8. 大平台时代到来 基金电商寻求突围
  9. 新观察:企业将全面上云 披露“云计算支出”会是新常态
  10. 【优化调度】基于matlab改进粒子群算法求解微电网优化调度问题【含Matlab源码 052期】