rsync+inotify实现数据实时同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify实现数据实时同步相关的知识,希望对你有一定的参考价值。

一、rsync

(一)、rsync简介

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

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

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

2、 rsync==scp
[[email protected] test]# rsync -rp /test/ 10.0.0.41:/test/
[email protected]‘s password:

3rsync==rm

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

(三)、rsync工作方式

1、本地备份方式

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

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

2、远程数据备份方式

语法:
Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

练习:[[email protected] test]# rsync -avz /backup/ [email protected]:/backup/
[email protected]‘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...] [[email protected]]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

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

    守护进程方式部署流程

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

    [[email protected] ~]# 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)确认软件是否安装
[[email protected] ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)创建认证密码文件
echo "jiang" >>/etc/rsync.password
chmod 600 /etc/rsync.password
3)、进行数据备份测试
[[email protected] tmp]# rsync -avz /etc/hosts [email protected]::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/ [email protected]::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修改

以上是关于rsync+inotify实现数据实时同步的主要内容,如果未能解决你的问题,请参考以下文章

inotify+rsync实现实时同步

inotify和rsync实现数据实时同步

0基础linux运维教程 Rsync结合inotify实现数据实时同步

rsync+inotify实时同步

inotify实时同步数据

rsync+inotify实时同步