rsync+inotify实现全网自动化数据备份-技术流ken

1.rsync简介

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

2.rsync的功能和特点

1. 可以实现服务器各种资源的备份(可以夸文件系统)

2. linux-rsync,windows-cwrsync

3. 可以做全量备份,也可以做增量备份

4. 在做备份的时候,可以排除一些特定的文件不做备份

5. 可以结合ssh实现加密传输

6. rsync支持工作在后台的模式(守护进程模式)

7. rsync可以结合inotify/sersync实现自动实时备份

8. rsync在传输文件的过程中可做限速

3.rsync的工作模式

1. 命令行模式(shell模式)

类似于cp、dd命令,实现备份文件的复制(备份)

2. 远程模式(远程shell模式)

利用ssh实现数据的远程传输,类似于 scp

3. 列表模式

类似于执行ls命令,仅仅用于列出文件内容列表(不是做复制操作)

4. 后台模式(守护进程模式)

rsync是工作在后台的

4.rsync实现自动备份

rsync实时自动备份

结合inotify/sersync

inotify/sersync:监控文件和目录中的文件是否发生更改(找出新文件)

rsync:将找出的文件备份过去

rsync的用法

1.本地使用(cp)

2.远程使用(scp)

3.守护进程(socket)

5.rsync选项详解

选项
-p:保持文件的权限属性不变
-v:显示执行过程信息
-r:目录做递归
-a:归档(包含r)
-z:压缩
-l:仅仅传输软链接自身
-L:传输软连接所指向的原始文件
-b:在备份文件的时候,如果备份文件已经存在,会将目标位置下旧的文件重命名,然后生成新的备份
--suffix=xxx        指定旧备份文件的后缀名
--backup-dir=xxxx   指定将旧备份文件移动到哪个位置下
-e:结合ssh实现加密传输
-e "ssh -p 22"
组合:-avz

6.rsync配置文件参数详解

模块:其实就是一个目录,这个模块用于保存客户端所传递过来的文件
    参数:
        pid file:指定rsync的pid文件的保存位置
        uid:指定运行rsync进程的用户id
        gid:指定运行rsync进程的用户组id
        port:指定rsync所监听的端口(默认端口873)
        path:指定模块所对应的目录的位置
        use chroot:指定将用户锁定在家目录中
        max connections:最大连接数(指定最多同时有多少个客户端在传输文件)
        log file:指定日志文件的位置
        log format:指定日志格式
        lock file:指定rsync进程的锁文件的位置
        read only:指定模块是否为只读状态
        write only:指定模块是否为只写状态
        list:指定用用户是否可以查看模块所对应的路径下的文件列表
        exclude:指定排除不做传输的文件
        exclude from:通过读取一个文件,来获取不对哪些文件做传输
        auth users:指定用于连接这个模块所要使用的匿名用户名
        secrets file:指定保存虚拟用户和密码文件
        hosts allow:指定可以做文件传输的主机
        hosts deny:黑名单
        timeout:指定客户端的超时时间

7.inotify简介

inotify:查找发送了改变的文件或者新文件,可以持续检测一个目录中的文件是否发生更改。

软件inotify-tools有两个组件

inotifywait:检测一个目录下的文件所发生事件

inotifywatch:统计所触发的事件的次数

8.inotifywait的选项

    -r:递归目录
    -q:仅仅打印监控的事件信息
    -m:一直处于监控状态[组合使用-mqr]
    --excludei:排除文件或目录(不区分大小写)
    --exclude:排除文件或目录(区分大小写)
    --format:指定输出格式
        %w:显示触发监控的事件的所在路径.[%w%f组合使用就能得到文件名]
        %f:显示触发监控的事件的文件名
        %e:显示所触发的事件
        %T:显示事件的触发时间
    --timefmat:指定输出的时间的格式
    -e:指定要监控的事件

9.inotify监控的事件

    access              file or directory contents were read
    modify              file or directory contents were written
    attrib              file or directory attributes changed
    close_write          file or directory closed, after being opened in writeable mode
    close_nowrite      file or directory closed, after being opened in read-only mode
    close              file or directory closed, regardless of read/write mode
    open              file or directory opened
    moved_to          file or directory moved to watched directory
    moved_from          file or directory moved from watched directory
    move              file or directory moved to or from watched directory
    create              file or directory created within watched directory
    delete              file or directory deleted within watched directory
    delete_self          file or directory was deleted
    unmount              file system containing file or directory unmounted

10.rsync+inotify全网自动化备份实战案例

1.环境准备

centos7.5

rsync服务端IP:172.20.10.7/28

inotify服务端IP:172.20.10.8/28

2.关闭安全服务

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
[[email protected] ~]# iptables -F

3. 配置rsync服务端

创建共享目录

[[email protected] ~]# mkdir /ken

创建用于运行rsync进程的用户

[[email protected] ~]# useradd -r -s /sbin/nologin -u 333 kenken

修改属主和数组

[[email protected] ~]# chown -R kenken.kenken /ken

查看rsync的文件,/etc/rsyncd.conf,此文件默认不存在,需要自己手工写。

[[email protected] ~]# rpm -ql rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
/usr/bin/rsync
...

创建rsync配置文件

[[email protected] ~]# vim /etc/rsyncd.conf
pid file=/var/lock/subsys/pidfile
lock file=/var/lock/subsys/rsync
log file=/var/log/rsync
uid=333
gid=333
timeout=100
max connections=199
[ken]
path=/ken
list=yes
use chroot=yes
read only=no
auth users=user1
secrets file=/etc/rsyncd.pwd
hosts allow=172.20.10.8/28

创建虚拟用户文件

[[email protected] ~]# echo "user1:123">>/etc/rsyncd.pwd

修改权限为600

[[email protected] ~]# chmod 600 /etc/rsyncd.pwd 

启动rsync服务

[[email protected] ~]# rsync --daemon
[[email protected] ~]# ss -tnl | grep 873
LISTEN     0      5            *:873                      *:*
LISTEN     0      5           :::873                     :::*                  

4.配置inotify服务端

下载inotify需要配置epel仓库,复制如下代码到你的yum配置文件里面即可

[ken]
name=ken
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

下载inotify

[[email protected] ~]# yum install rsync inotify-tools -y

创建需要备份数据的目录

[[email protected] ~]# mkdir /kenken

创建一个保存rsync虚拟用户和密码的文件并更改权限为600

[[email protected] ~]# echo "123" >>/etc/rsync.pwd
[[email protected] ~]# chmod 600 /etc/rsync.pwd

创建自动化监控备份脚本

[[email protected] ~]# vim authbak.sh
#!/bin/bash
prog="inotifywait"
events="create,delete,close_write"
opt="-mrq"
dir="/kenken"
remote_host="172.20.10.7"
anon_user="user1"
mod_name="ken"
pwd_file="/etc/rsync.pwd"
$prog $opt -e $events --format "%w%f" $dir | while read line
do
     rsync -rz --delete $dir [email protected]$remote_host::$mod_name --password-file=$pwd_file
done

客户端运行脚本

[[email protected] ~]# nohup bash authbak.sh &

5.在客户端进行测试

客户端创建文件测试

[[email protected] kenken]# touch {1..10}.txt
[[email protected] kenken]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

在rsync服务器端查看是否有相同文件

[[email protected] ken]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

测试成功!

客户端删除文件测试

[[email protected] kenken]# rm -rf 1.txt 4.txt [[email protected] kenken]# ls10.txt  2.txt  3.txt  5.txt  6.txt  7.txt  8.txt  9.txt

在rsync服务器端查看文件是否也已经被删除

[[email protected] kenken]# ls
10.txt  2.txt  3.txt  5.txt  6.txt  7.txt  8.txt  9.txt

测试成功!

至此我们已经可以实现全网自动化, 无差异化数据备份了。

原文地址:https://www.cnblogs.com/kenken2018/p/9736650.html

时间: 2024-11-11 16:56:47

rsync+inotify实现全网自动化数据备份-技术流ken的相关文章

网站集群架构实战(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

第三章 rsync通过远程ssh实现数据备份

第三章 rsync通过远程ssh实现数据备份 通过远程shell访问,实现数据同步备份 拉--即将远程服务器上的数据同步到本地服务器上. 推--即将本地服务器上的数据同步到远程服务器上. 语法格式: 拉操作==>     rsync   选项    用户名@备份源服务器IP地址:备份源目录    目标目录 推操作==>     rsync   选项    备份源目录    用户名@目标服务器IP地址:目标目录 环境: 本地服务器为:DataServer.  IP地址为:192.168.88.8

zabbix实现百台服务器的自动化监控--技术流ken

前言 最近有小伙伴通过Q联系到我说:公司现在有百多台服务器,想要部署zabbix进行监控,怎么实现自动化全网监控? 本篇博客就把我告诉他的解决方案写出来,供大家以后参考. 实现自动化全网监控,需要用到脚本,以及zabbix的自动注册或者自动发现的功能.以前也写过一篇关于两者的博客<分布式系统监视zabbix讲解八之自动发现/自动注册--技术流ken>,但是内容可能没有那么详尽,本篇博客将详细完整的演示如何使用zabbix实现百台服务器的自动化监控. zabbix自动注册 活动的Zabbix a

cobbler批量安装系统使用详解-技术流ken

1.前言 cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 2.系统环境准备及其下载cobbler 一.系统环境 系统版本:CentOS release 6.7 (Final) 内网IP:192.168.232.7/24    #用来对内通信,提供cobbler服务 外网IP:10.220.5.166/24      #连接外网 二. 关闭安全服务 [[email protected] ~

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki

高可用集群之keepalived+lvs实战-技术流ken

1.keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合使用,在实际工作中搭建高可用,高负载,高性能的服务器集群. "Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将

nginx实现反向代理、负载均衡-技术流ken

1.简介 本篇博文是<nginx实现动态/静态文件缓存-技术流ken>的二部曲.将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例. 反向代理--"反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器." 负载均衡--"网络专用术语,负载均衡建立在现有网络结构之

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken

前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客<Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken>,<Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken>,以及关于jenkins的简单使用<Jenkins持续集成介绍及插件安装版本更新演示(一)--技术流ken>.相信大家也已经完全掌握了这三项工具的使用,也可以使用这几项工具可以部署静态以及动态网站了. 以前的博客可以实现一键部署网站