rsync远程同步+inotify监控

目录

一、RsyncRsynchttps://so.youkuaiyun.com/so/search?q=Rsync&spm=1001.2101.3001.7020

1、rsync介绍

2、rsync同步方式

3、rsync工作场景

4、rsync同步源

5、配置rsync源

5.1 基本思路

5.2  配置文件/etc/rsync/rsyncd.conf

5.3 独立的账号文件

5.4 启用rsync服务

6、常用Rsync命令

7、rsync与cp、scp对比

8、配置源的两种表达方式

二、rsync实验

1、本地复制

1.1 本地复制的"妙用"

2、rsync异地复制

2.1 配置环境

2.2 rsync服务器配置

2.3 修改配置文件

2.4  设置密码文件、并开启rsync服务

2.5 创建共享文件,也就是源文件

3、客户端配置

3.1 普通同步

3.2 免密同步

三、inotify监控

1、inotify介绍

1.1 调整inotify内核参数

1.2 常用选项

2、rsync+inotify实现配置

2.1 rsync服务器配置

2.2 rsync服务端优化内核参数

2.3 client端(客户端)配置


一、RsyncRsyncicon-default.png?t=M85Bhttps://so.youkuaiyun.com/so/search?q=Rsync&spm=1001.2101.3001.7020

1、rsync介绍

rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他 SSH、rsync 主机同步,rsync监听端口:873、rsync运行模式:C/S

官方网站:https://rsync.samba.org/

2、rsync同步方式

完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。
差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

3、rsync工作场景

  • 两台服务器之间数据同步。
  • 把所有客户端服务器数据同步到备份服务器,生产场景集群架构服务器备份方案。
  • rsync结合inotify的功能做实时的数据同步

4、rsync同步源

rsync同步源:指的就是备份操作的远程服务器,也称备份源。

5、配置rsync源

5.1 基本思路

① 建立rsyncd.conf 配置文件、独立的账号文件

② 启用rsync的 --daemon模式

5.2  配置文件/etc/rsync/rsyncd.conf

  认证配置auth users、secrets file,不加则为匿名

5.3 独立的账号文件

① 文件位置可在配置文件中定义

② 格式: 用户名:密码

③ 每一行一个用户记录

④ 独立的账号数据,不依赖系统账号

5.4 启用rsync服务

① 通过 --daemon独自提供服务,rsync --daemon

② 执行kill $(cat /var/run/rsyncd.pid)关闭服务

6、常用Rsync命令

命令使用语法
rsync 【选项】原始位置 目标位置

-r    递归模式,包含目录及子目录中的所有文件
-l    对于符号链接文件仍然复制为符号链接文件。
-v    显示同步过程的详细(verbose)信息。
-z    在传输文件时进行压缩(compress)。
-a    归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p   保留文件的权限标记。
-t    保留文件的时间标记。
-g   保留文件的属组标记(仅超级用户使用)。
-o   保留文件的属主标记(仅超级用户使用)。
-H   保留硬连接文件。
-A    保留 ACL 属性信息。
-D   保留设备文件及其他特殊文件。
delete  删除目标位置有而原始位置没有的文件。
–checksum  根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

–delete的作用简单来说,就是删除差异文件,保留一致性

7、rsync与cp、scp对比

① cp命令是一种典型的将文件完整的拷贝到一个位置。而rsync是,第一次拷贝,在目标位置没有的时候,rsync是全量拷贝过去,但是第二次拷贝的时候,只会对差异项进行同步拷贝。所有如果对同一个文件进行二次备份的话,rsync速度会相较于cp而言更快。
② cp只支持本地,而rsync支持远程
③ scp是基于cp原理,也是属于完整性拷贝文件。假设rsync和scp拷贝的文件都是第一,目标地址都没有要同步的文件,此时,这两者的差异在于,第一个,这个要传输的文件大不大,第二个要看在传输的过程中,用的带宽大不大。如果文件不大的情况下,scp是把数据从磁盘中的块存储提取出来,封装一下,网络传过去,此时scp更快,如果是更大的文件,比如说40G,带宽只支持100M的带宽,scp想要传输,需要拆分数据,一段一段传输。而rsync会根据一个逻辑意义上的空间,把数据划分出来,把数据先压缩再传输,所以这种方式而言,带宽校,文件大,这个时候先压缩再传输会比较快。此时适合用rsync远程同步。

8、配置源的两种表达方式

格式一

用户名@主机地址::共享模块名 本地目录
例:
rsync -avz backuper@192.168.88.88::wwwroot /opt/

#表示将192.168:88.88同步源的wwwroot模块中定义的文件同步到本地的/opt目录

格式二

rsync://用户名@主机地址/共享模块名 本地目录
例:
rsync -avz rsync://backuper@192.168.88.88wwwroot /opt/

 

二、rsync实验

1、本地复制

rsync -avz /abc /opt 
#复制整个abc目录

rsync -avz /abc/ /opt 
#复制abc目录下的文件

 

 

 

1.1 本地复制的"妙用"

对一个目录下所有文件删除时,我们可以使用rm -rf 进行删除,但是rm -rf 是需要对文件进行遍历的。比较消耗资源,所以我们可使用–delete进行本地删除。

这种办法,对资源的消耗较少。

2、rsync异地复制

2.1 配置环境

主机名操作系统ip地址
rsync(同步源)centos7192.168.100.20
client(客户端)centos7192.168.100.30

2.2 rsync服务器配置

关闭防火墙、核心防护、检查下载更新rsync服务

systemctl stop firewall
systemctl disbale firewalld
setenforce 0

rpm -q rsync
yum -y install rsync

 

 

2.3 修改配置文件

vim /etc/rsyncd.conf  
uid = root                              #用户id
gid = root                            #组id
use chroot = yes                 #开启,禁锢在源目录                               
address = 192.168.88.88  #监听地址
port 873                                        #默认端口号为873                         
log file = /var/log/rsyncd.log               #日志文件存放位置    
pid file = /var/run/rsyncd.pid                  #存放进程id的文件位置
hosts allow = 192.168.88.0/24      #允许访问的主机网段
[wwwroot]                                            #共享模块的名称                   
path = /mnt/345                                 #源目录路径
comment = Document Root of www.lic.com   #默认
read only = yes                             #是否为只读                       
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z        #同步时不再压缩的文件类型
auth users = lbp                                           #授权用户,多个账户以空格隔开   
secrets file = /etc/rsyncd_users.db    #存放账号信息的数据文件,一行一个

 

 

 

 

2.4  设置密码文件、并开启rsync服务

vim /etc/rsyncd_users.db  #编辑用户账号文件,固定格式为[名称:密码],一行一个
gang:123456
 
chmod 600 /etc/rsyncd_users.db   #官方要求,最好只是赋权600!
 
rsync --daemon   #开启服务
netstat -natp | grep rsync   #检测端口号,确认服务是否成功开启

-------------------------------
如果要关闭服务可以使用以下命令
kill $(cat /var/run/rsync.pid) 或者

 

 

 

 

2.5 创建共享文件,也就是源文件

echo "lbp" > /mnt/345/2.txt
 echo "lbp3" > /mnt/345/2.txt

chmod +r /mnt/345/ 

ll -d /mnt/345/ 

 

 

3、客户端配置

3.1 普通同步

rsync -avz lbp@192.168.88.88::wwwroot /mnt  

需要输入密码 

 

 

3.2 免密同步

前面同步的需要删除

vim /etc/server.pass
123456

chmod 600 /etc/server.pass
rsync -avz --password-file=/etc/server.pass lbp@192.168.88.88::wwwroot /mnt

 

 

 

三、inotify监控

1、inotify介绍

可以监控文件系统的变动情况,并作出通知响应

1.1 调整inotify内核参数

vim /etc/sysctl.conf(内核参数文件)
max_queue_events        #监控事件队列大小
max_user_instances      #最多监控实例数
max_user_watches        #每个实例最多监控文件数  

#命令工具
inotifywait     #用于持续监控,时实输出结果
inotifywatch    #用于短期监控,任务完成后再输出结果

1.2 常用选项

选项功能
-m持续监控
-r递归监控所有子对象
-q简化输出信息
-e指定要监控哪些事件类型
modify修改
create创建
move移动
delete删除

2、rsync+inotify实现配置

2.1 rsync服务器配置

vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.88.88
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.88.0/24
[wwwroot]
path = /mnt/345
read only = no  #关闭只读模式
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = lbp
secrets file = /etc/rsyncd_users.db

chmod 600 /etc/rsyncd_users.db   #官方要求,最好只是赋权600!

kill $(cat /var/run/rsyncd.pid)  #杀死原rsync进程

rsync --daemon  #开启rsync

netstat -natp | grep rsync  查看服务

 

 

 

2.2 rsync服务端优化内核参数

cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances 
cat /proc/sys/fs/inotify/max_user_watches 
#查看当前默认inotify的内核参数
#依次为监控事件队列、最多监控实例与每个实例最多监控的文件

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
#优化内核参数

sysctl -p
#加载内核参数配置文件使其生效

 

 

 

 

2.3 client端(客户端)配置

按装inotify-tools

yum -y install gcc gcc-c++  安装依赖环境

上传安装包inotify-tools-3.14.tar.gz 到/opt

cd /opt
tar -zxvf inotify-tools-3.14.tar.gz 解包

cd inotify-tools-3.14/
./configure 编译
make && make install  安装

 

 

 

 

 

编写触发同步脚本

脚本的目的就是时实监控、时实同步的功能

vim /opt/inotify.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /mnt"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /mnt/ lbp192.168.88.88::wwwroot"
#死循环持续监控
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done

#脚本解释
先定义一个变量为监控这个目录中是否创建、删除、移动、修改、属性等信息的变化
再定义一个变量为rsync同步,将/abc中的目录中的信息同步到rsync服务器中的指定目录
再编写一个while循环,先执行监控变量,再执行while循环,
循环内容为,读取目录事件文件,如果rsync进程同步操作不存在,则执行同步操作的变量。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值