首页 > 其他分享 >rsync远程同步

rsync远程同步

时间:2022-12-09 21:44:37浏览次数:30  
标签:文件 rsync 同步 inotify 192.168 etc 远程

一.rsync概述

  • rsync是一个开源的、快速的、多功能的、可以实现全量和增量的本地或者远程数据同步备份的工具。
  • 它可以不进行原有数据属性的改变去实现数据的备份迁移。
  • rsync适用于多种操作系统,其监听端口为:tcp/udp 873,模式为:C/S

1.1rsync的同步方式

 ①全量备份

  • 把原有的数据全部去传送,全量复制,效率比较低

②增量备份

  • 在传输数据之前会通过算法把你原有的数据和需要传送的数据进行比较,把不一样的数据通过网络传输,增量复制,效率比较高

③差量备份

  • 备份上一次完全备份后有变化的数据

1.2rsync的特点

  • 可以镜像的保存整个目录和文件系统
  • 可以保存源文件的权限、时间、软硬连接等等
  • 快速:第一次同步时rsync会复制全部的内容,在下一次只会去传输修改过的文件。并且在传输数据的过程中可以实现压缩及解压的操作,这样就可以使用更少的带宽
  • 安全:可以使用scp、ssh等方式去传输文件,也能支持socket连接,支持匿名传输

1.3rsync同步的关系

  • 上行同步(上传):同步源负责提供文件的原始位置,发起端对应位置有读取的权限
  • 下行同步(下载):同步源负载提供文件的目标位置,发起端对应有写入的权限

 

 1.4rsync命令格式与常用选项

#基本格式
rsync  -选项   原始位置  目标位置

 常用选项:

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

1.5配置rsync源的两种方法

①用户名@主机地址::共享模板名

rsync -avz [email protected]::wwwroot   /opt/

#backuper指的是我在同步的时候用的哪个用户身份
#wwwroot代表的是模块,模块下面会写同步的默认路径和一些特性,所以我们只需要写模块就好了
#/opt指的是本地节点

 

②rsync:/用户名@主机名/共享模版名

rsync -avz rsync://[email protected]/wwwroot  /opt/

#URL:具体的位置点,例如:http://www.baidu.com./class1/test/index.html
#URI:标识的是拥有同一类特性或类型的一个集合 ,例如http://www.baidu.com./class1/test

二.rsync实现思路

三.inotify介绍和应用

3.1inotify概述

  • 监控文件系统的各种变化,实现文件异动告警
  • 增量备份与数据的强一致性

3.2rsync+inotify

  • 使用inotify通知接口,去监控文件的各种变化情况,比如文件的存储、删除、移动、修改等等。利用监控可以方便的去实现文件的增量备份。
  • inotify和rsync结合,可以实现触发式备份(实时备份),一旦原始位置的文件发生变化,则会立即启动增量备份的操作,否则会处于等待的状态

3.3inotify的内核参数

vim /etc/sysctl.conf (内核参数配置文件)
inotifywait:    #用于持续监控,实时输出结果
inotifywatch:   #用于短期监控,任务完成后再输出结果
max_queue_events   //监控事件队列大小,默认值16384
max_user instances      //最多监控实例数,可以看成最多可以监控多少个实例,默认值128
max_user_watches        //每个实例最多监控文件数,默认值8192

#############################
当要监控的目录,文件数量较多或者变化频繁时,建议加大三个参数的值

 

3.4inotifywait命令格式和选项

#命令格式
inotify  -选项  监控的操作  目标位置

 

选项:
-e     指定要监控哪些事件类型
-m     持续进行监控
-r     递归监控所有子对象
-q     简化输出信息

 

 

 

四.rsync部署下行同步

4.1部署环境

服务端rsync:192.168.61.100

客户端rsync:192.168.61.101

4.2rsync服务端

#关闭防火墙及安装机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)
yum install -y httpd rsync

#编辑rsync配置文件
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.111.30
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.111.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.yxp.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper    
secrets file = /etc/rsyncd_users.db

################详解################################################################
uid = root                //用户id,表示共享权限能执行的身份
gid = root                 //组id
use chroot = yes       //开启,禁锢在源目录,表示允许在访问我备份的目录或文件的时候,使用的角色是root,同时你访问本地目录时拥有的也是root权限
address = 192.168.58.88           //监听地址
port 873                           //默认端口号为873
log file = /var/log/rsyncd.log               //日志文件存放位置
pid file = /var/run/rsyncd.pid                 //存放进程id的文件位置
hosts allow = 192.168.58.0/24                //允许访问的主机网段,有点类似于黑白名单


###############以上是全局配置,以下是模块配######################################################################
[wwwroot]                                   //共享模块的名称,rsync默认调用该模块,默认我调用的路径是该模块指定的路径
path = /var/www/html                //源目录路径
comment = Document Root of www.yxp.com                
read only = yes                                       //是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z    //同步时不再压缩的文件类型,因为同步时,-avz已经进行压缩
auth users = backuper                                    //授权用户,使用wwwroot模块的用户是哪个用户,多个账户以空格隔开
secrets file = /etc/rsyncd_users.db                    //存放账号信息的数据文件,一行一个
##############小结##################################################
第一部分定义共享模块全局模块配置
第二部分:共享模块(可以为多个)  可以对应不同的“源目录” 和授权账号信息
第三部分,此配置文件是为rsync --daemon模式设置的
#如采用匿名的方式,只要将其中的 “auth users” 和 “secrets file”配置项去掉即可
####################################################################
 
vim /etc/rsyncd_users.db
backuper:123123

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

#开启服务
rsync --daemon

#检测端口号,确认服务是否成功开启
netstat -natp | grep rsync

#切换至共享目录下
cd /var/www/html

4.3rsync客户端

#关闭防火墙及安装机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

#安装rsync
yum install -y rsync

#创建一个目录/abc,用来同步
mkdir /abc
cd /abc/

#使用rsync同步备份源的同步文件
rsync -avz [email protected]::wwwroot /abc

#查看同步是否成功
ls 

#编辑免交互密钥文件,第一行为密码
vim /etc/server.pass
123456

#给密钥文件赋权600
chmod 600 /etc/server.pass

#rsync,使用密钥文件/etc/server/pass对应backuper用户,IP地址为192.168.111.30的共享模块文件进行压缩,并归档同步至当前服务器的/abc目录下,同时删除差异内容,如果原目标有的,会增加,原目标没有的,会删除。保持一致性。
rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /abc

#查看下行同步是否成功
ls /abc

4.3关闭rsync服务

kill  $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid 

五.rsync部署下行同步

将client服务器上的数据备份到server服务器(上行同步)

rsync(远程复制)+  inotify(监控)+  脚本(添加到计划任务)== 实现一个自动化效果

5.1部署环境

服务端rsync:192.168.61.100

客户端rsync:192.168.61.101

5.2服务端

vim /etc/rsyncd.conf
read only = no    //关闭只读模式,否则将不可写入

#修改完配置文件需要重启服务,这里采用直接杀掉进程号的方式
kill `cat /var/run/rsyncd.pid`

#检查一下服务是否已被终止
netstat -natp | grep rsync

#再次开启服务并检查端口号确认
rsync --daemon
netstat -natp | grep rsync

5.3客户端

①优化client的内核参数

cat /proc/sys/fs/inotify/max_queued_events      //监控事件队列
cat /proc/sys/fs/inotify/max_user_instances     //最多监控实例数
cat /proc/sys/fs/inotify/max_user_watches       //每个实例最多监控文件数
 
#当要监控的目录、文件数据量较多或者变化频繁时,建议加大参数值
vim /etc/sysctl.conf   
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
 
sysctl -p        //刷新 

②客户端编译安装inotify-tools

#安装gcc gcc-c++ 
yum install -y gcc gcc-c++ 

#切换至/opt上传inotify-tools安装包
cd /opt
tar zxf inotify-tools-3.14.tar.gz   //解压
 
#编译安装 
cd /opt/inotify-tools-3.14/
./configure
make -j 4 && make install

③客户端启动监听

#持续监听对/abc的modify,create,move,delete操作
inotifywait -mrq -e modify,create,delete /abc 

④编写触发同步脚本

#######脚本内容############################################
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /abc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /abc/ [email protected]::wwwroot/"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done
#########脚本详解############################################
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /abc/"
#INOTIFY_CMD变量:持续监控 /opt/abc目录中的创建,删除,移动,修改,改变时间的操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /abc/ [email protected]::wwwroot"
#RSYNC_CMD变量:使 xixi 用户,/etc/server.pass 密钥文件,将 /xcf1 目录下的文件进行压缩,归档,保留硬链接文件同步至 192.168.61.100 的共享模块定义的目录 /var/www/html 下,并删除差异性内容,保持一致性
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE        #持续监控...
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then        #如果服务并未启动,则执行同步
        $RSYNC_CMD
    fi
done
#########################################################################
 
cd /opt/
chmod +x inotify.sh  //给脚本赋权

#设置开机自启动
chmod +x /etc/rc.d/rc.local 
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local 

#执行脚本
sh -x ./inotify.sh  

#创建一个新的html文件并删除之前的qwe
cd /abc
touch suoluo.html

#再次确认一下
ls

⑤在服务端查看同步

 

标签:文件,rsync,同步,inotify,192.168,etc,远程
From: https://www.cnblogs.com/suoluo212/p/16954992.html

相关文章

  • Rsync
    目录:1、概念2、Rsync同步方式3、优点4、缺点5、适用场景6、常用Rsync命令7、实验8、Rsync实时同步Rsync+inotify问题实验Rsync概念一款快速增量备份......
  • rsync远程同步
    一、rsync概述1.1rsync的概念rsync,remotesynchronize顾名思义就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加......
  • HCL虚拟环境搭建并且支持ssh远程访问
    1.连接设备新建设备和host主机,连线,host主机选择本地网卡(不选host-only网卡)2.启动设备,打开终端,按ctrl+c3.执行命令<H3C>system-view[H3C]intg0/0[H3C-GigabitEthe......
  • 浅谈单相智能电量多用户远程预付费控系统优化的设计及应用
    韩欢庆安科瑞电气股份有限公司上海嘉定201801  摘要:由于现有系统仅对电表数据进行读取操作,存在成本较高和耗时较长的问题,为此对单相智能多用户远程预付费控系统优化设计......
  • 智能PDU,网络远程管理电源能耗提升配电效率
    智能PDU,网络远程管理电源能耗提升配电效率智能PDU,网络远程管理电源能耗提升配电效率京准电子科技官微——ahjzsz案例背景:国网某省电力有限公司(以下简称:国网电力)部署数......
  • Rsync远程同步
    1、rsync介绍rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩......
  • verysync 同步
    verysync同步财联社涨停到群辉 dockerrun--nameverysync-d-v/root/verysync:/data-v/root/quantum/app/scripts/quantum:/mnt/quantum-p23000:3000-p2203......
  • 多个videod视频同步播放
    两个video标签<video  :src="vodelurl1.url" controls  style="width:100%;height:230px;object-fit:cover;"  id="videoid1" ></video> <video :src......
  • 西南某大学城市学院安县校区远程预付费云平台系统的设计与应用
    摘要:由于传统电费管理制度采用先用电后收费的方法存在弊端,由此产生了预付费供电方式,先交费后用电,有效地解决了收费难的问题,也可以实现宿舍安全用电的智能化管理,提高供电效率......
  • 南宁研祥智谷远程预付费电能管理系统的应用
    摘要:本小结介绍南宁研祥智谷(二、三期)项目远程预付费电能管理系统,采用智能远程预付费电度表,采集各商户实时用电量、剩余电量,通过智能远程预付费电度表进行远程分合闸控制,进而......