一、rsync介绍

  rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优先于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优先于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令。

  一个rsync相当于scp(远程拷贝),cp(本地拷贝),rm(本地删除),但是还优先于这些命令。Rsync还可以是一个网络服务(端口port、socket服务)
在同步备份数据时,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

二、rsync应用场景

2.1 两台服务器之间数据同步cron+rsync、rsync+inotify(实时备份)

2.2 把所有客户服务器数据同步到备份服务器(定时备份)

三、rsync的安装、配置、启动

3.1 rsync服务端的配置

 [root@--- ~]# cat /etc/redhat-release        #当前主机作为rsync服务端
CentOS Linux release 7.5. (Core)
[root@--- ~]# yum install rsync -y
[root@--- ~]# rpm -qa | grep rsync
rsync-3.1.-.el7.x86_64 [root@--- ~]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections =
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [data]
uid = rsync
gid = rsync
path = /data_rsync/
comment = rsync data
ignore errors
read only = no
write only = no
hosts allow = 192.168.7.0/
hosts deny = *
list = false
auth users = rsync_file
secrets file = /etc/rsync.password
[root@--- ~]# useradd rsync -s /sbin/nologin -M
[root@--- ~]# mkdir /data_rsync
[root@--- ~]# chown rsync.rsync /data_rsync/
[root@--- ~]# echo 'rsync_file:lzfnlzfn' >/etc/rsync.password
[root@--- ~]# chmod /etc/rsync.password
[root@--- ~]# rsync --daemon
[root@--- ~]# echo '/usr/bin/rsync --daemon' >>/etc/rc.local
[root@--- ~]# chmod +x /etc/rc.d/rc.local #以下方法用于停止rsync服务
 [root@192-168-7-77 ~]# killall rsync
 [root@192-168-7-77 ~]# kill –HUP `cat /var/run/rsyncd.pid`
 [root@192-168-7-77 ~]# kill –USR2 `cat /var/run/rsyncd.pid`

3.2 rsync客户端的配置

 [root@linux-node1 ~]# echo 'lzfnlzfn' /etc/rsync.password
[root@linux-node1 ~]# chmod /etc/rsync.password
[root@linux-node1 ~]# rsync -avz ./data/ rsync_file@192.168.7.77::data --password-file=/etc/rsync.password #由客户端向服务端推送数据的时候注意客户端文件夹的权限是否为rsync
[root@linux-node1 ~]# rsync -avz rsync_file@192.168.7.77::data /data_rsync/ --password-file=/etc/rsync.password #由服务端向客户端拉取数据
[root@linux-node1 ~]# rsync --timeout=30 -auq --bwlimit=4096 --include=mysql-bin* --exclude=*  rsync_file@192.168.7.77::data /data_rsync/ --password-file=/etc/rsync.password

3.3 关于auth认证排错思路

  1. 确认密码输入是否正确
  2. server端的secrets file内容格式为 rsync_file:lzfnlzfn,冒号前面为虚拟用户名,后面为认证密码
  3. client端的secrets file内容直接为密码lzfnlzfn
  4. 配置文件/etc/rsyncd.conf中的auth users和secrets file名称是否写错
  5. secrets file文件权限必须为600
  6. secrets file文件必须拥有运行rsync --daemon用户的权限(假如root执行rsync --daemon 就必须执行chown root.root /etc/rsync.password命令修改所有者)

四、inotify的安装、配置、启动

4.1 inotify介绍

  rsync远程同步工具,通过rsync可以实现对远程服务器数据的增量备份同步,但rsync自身也有瓶颈,同步数据时,rsync采用核心算法对远程服务器的目录文件进行比对,只进行差异同步。如果服务器的文件数量达到百万甚至千万量级,那么文件比对将是非常耗时的,而且发生变化的往往是期中很少的一部分,这是非常低效的方式。inotify的出现,可以缓解rsync不足之处,取长补短。
  Inotify实际是一种事件驱动机制,它为应用程序监控文件系统时间提供了实时相应事件的机制,而无须通过诸如cron等的轮询机制来获取时间。Cron等机制步进无法做到实时性,而且消耗大量系统资源。相比之下inotify基于事件驱动,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界的事件机制相符合。

4.2 inotify的安装使用

 注:inotify软件需要在rsync的Client端使用

 登录网站https://sourceforge.net/projects/inotify-tools/下载inotify软件,以下为安装方法:

[root@linux-node1 ~]# tar xf inotify-tools-3.14.tar.gz
[root@linux-node1 ~]# cd inotify-tools-3.14/
[root@linux-node1 ~/inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
[root@linux-node1 ~/inotify-tools-3.14]# make && make install
[root@linux-node1 ~/inotify-tools-3.14]# cd ..
[root@linux-node1 ~]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify
[root@linux-node1 ~]# ll /usr/local/inotify/
total
drwxr-xr-x root root Dec : bin
drwxr-xr-x root root Dec : include
drwxr-xr-x root root Dec : lib
drwxr-xr-x root root Dec : share
[root@linux-node1 ~]# cat /proc/sys/fs/inotify/max_queued_events #设置inotifywait或inotifywatch命令可监视的文件数量(单时程) [root@linux-node1 ~]# cat /proc/sys/fs/inotify/max_user_instances #设置每个用户可以运行的inotifywait或inotifywatch命令的进程数 [root@linux-node1 ~]# cat /proc/sys/fs/inotify/max_user_watches #设置inotify实例事件(event)队列可容纳的事件数量 [root@linux-node1 ~]# /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data_rsync/ #监听对/data_rsync/目录的创建文件操作
[root@linux-node1 ~]# /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete /data_rsync/ #监听对/data_rsync/目录的删除文件操作
[root@linux-node1 ~]# /usr/local/inotify/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data_rsync/ #监听对/data_rsync/目录的创建、修改、删除

4.3 rsync+inotify的处理脚本

从客户端linux-node1的/data_rsync/目录作为备份目录,向192.168.7.77的rsync服务端同步数据。

[root@linux-node1 ~]# cat /home/scripts/inotify.sh
#!/bin/sh
cmd="/usr/local/inotify/bin/inotifywait"
$cmd -mrq --format '%w%f' -e create,close_write,delete /data_rsync | \
while read line
do
[ ! -e "$line" ] && cd /data_rsync/ && \
rsync -az --delete /data_rsync/ rsync_file@192.168.7.77::data --password-file=/etc/rsync.password && continue
rsync -az --delete $line rsync_file@192.168.7.77::data --password-file=/etc/rsync.password
done

rsync + inotify 数据实时同步的更多相关文章

  1. centos 配置rsync+inotify数据实时同步2

    一.Rsync服务简介 1. 什么是Rsync 它是一个远程数据同步工具,它在同步文件的同时,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“rsync算法”来使本地和远程两个主机 ...

  2. centos 配置rsync+inotify数据实时同步

    何为rsync? 定义: rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,非常适用于异地备份 何为源端和发起端? 在远程同步过程中,负责发起rs ...

  3. linux rsync +inotify 实现 实时同步

    前言:     rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rs ...

  4. Rsync+Sersync数据实时同步(双向)

    Rsync+Sersync数据实时同步(双向) 服务介绍 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.se ...

  5. centos7配置rsync+inotify数据实时共享

    关于centos7版本上面搭建rsync服务并且实现实时同步之前一直是在6版本上面搭建rsync服务,在7版本上面折腾了半天.此处总结下inotify下载地址:http://github.com/do ...

  6. rsync简介与rsync+inotify配置实时同步数据

    rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync ...

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

    数据的实时同步 实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 实现实时同步的方法 ino ...

  8. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  9. rsync+inotify实现实时同步案例【转】

    1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...

随机推荐

  1. C/C++——赋值理解(匿名临时对象)

    对三,王炸: 赋值的本质,是将变量传递给一个匿名临时变量,之后再传递给另一个变量.  匿名临时对象: #include <iostream> using namespace std; cl ...

  2. 【JavaScript】富文本编辑器

    这是js写的富文本编辑器,还存在一些bug,但基本功能已经实现,通过这个练习,巩固了js富文本编辑方面的知识,里面包含颜色选择器.全屏.表情.上传图片等功能,每个功能实际对应的就是一个小插件啦 部分程 ...

  3. momenta

    编程:1.dp的题 2.白纸写代码,给一串数和一个目标值,使用四则运算和括号使得这串数最后计算结果为目标值,打印出所有的方案,要求是这些数每个最多被使用一次,可以不被用到. 3.考了一个查找数组里,未 ...

  4. 在 S5PV210 的 开发板上 使用 串口 收发信息

    参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准 ...

  5. Oracle与MySQL使用区别

    与MySQL通过创建不同的数据库来存储表 Oracle提出表空间(tablespace)的概念作为逻辑上的存储区域来存储表, 而不同的表空间由不同的用户来管理 用户可以授予权限或角色 举例: 使用PL ...

  6. 建立复数类Complex,并且进行赋值,求和,取模等操作

    #include "pch.h" #include <iostream> #include<cmath> using namespace std; clas ...

  7. 浅谈spj

    SPJ(special judge)是个好玩的东西,毕竟各类神奇的题目SPJ经常作为救火工具(比如说一不小心出成验证类的题目). 但SPJ是个坑,毕竟只让用个“testlib.h”,输入还特别奇怪.今 ...

  8. eclipse的git插件安装、配置与使用

    Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分, ...

  9. MySQL-5.5.32 配置文件优化详解

    目录 MySQL-5.5.32 配置文件优化详解 一.配置文件说明 2.my-medium.cnf 3.my-large.cnf 4.my-huge.cnf 5.my-innodb-heavy-4G. ...

  10. python的requests模块爬取网页内容

    注意:处理需要用户名密码认证的网站,需要auth字段. # -*- coding:utf-8 -*- import requests headers = { "User-Agent" ...