使用 Rsync 实现远程同步,以及实时同步

简介: Rsync 全称为:Remote Sync(远程同步),是一款开源的快速备份工具,可以在不同主机间镜像同步整个目录树,支持增量备份,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用(Linux 系统默认安装)

使用 Rsync 实现远程同步,以及实时同步



一、基本介绍


二、使用 Rsync 实现远程同步


1.配置同步端

2.进行同步备份

3.结合 CronJob 进行自动备份


三、通过 Inotify + Rsync 实现实时同步


1.配置发起端

2.编写自动同步脚本

3.验证


一、基本介绍



Rsync 全称为:Remote Sync(远程同步),是一款开源的快速备份工具,可以在不同主机间镜像同步整个目录树,支持增量备份,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用(Linux 系统默认安装)


服务器身份区分:


  • 发起端: 可以理解为客户端,向服务端发送要备份的数据(需要有同步端提供目录的读权限)


  • 同步端: 可以理解为服务端,专用于存放备份文件;类似于远程备份中心(通过提供目录,来使客户端进行同步)


image.png


Rsync 两种同步方式:


  • 上行同步: 将 Rsync 配置文件中的 path 目录同步到当前主机指定目录。


  • 下行同步: 将当前主机指定目录同步到 Rsync 配置文件中的 path 目录。


因为这两种同步方式的 区别就在于目标不同,所以我们下面主要为大家介绍下行同步。


二、使用 Rsync 实现远程同步



准备工作:


image.png


1.配置同步端


1)修改 Rsync 主配置文件


[root@B-Server ~]# vim /etc/rsyncd.conf
use chroot = yes                                # 禁锢在源目录
address = 192.168.1.2                           # 监听地址
port = 873                                  # 监听端口
log file = /var/log/rsyncd.log                      # 日志文件
pid file = /var/run/rsyncd.pid                      # 进程文件
hosts allow = 192.168.1.0/24                      # 允许访问的客户端地址
[PengYuYan]                                 # 共享模块名
path = /app/backup                            # 需要同步的实际路径
comment = This is Test                              # 描述信息. 随便写
read only = no                                # 读写权限
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2        # 同步时不再压缩的文件类型
auth users = zhangsan                             # 授权同步的账户
secrets file = /etc/rsync_users.db                    # 账户所在的数据文件


  • 你们要是复制我上面的话,是没问题的,但是要把 # 去掉,这是个坑,需要注意。


[root@B-Server ~]# sed -i 's/#.*//g' /etc/rsyncd.conf


2)创建备份目录


[root@B-Server ~]# mkdir -p /app/backup && chmod 777 /app/backup


3)创建备份账户密码文件


[root@B-Server ~]# echo "zhangsan:123123" > /etc/rsync_users.db     # zhangsan 是用户名. 123123 是密码
[root@B-Server ~]# chmod 600 /etc/rsync_users.db              # 对用户的数据文件进行权限保护


4)启动 Rsync 服务程序


[root@B-Server ~]# rsync --daemon                       # 启用 (当要关闭时使用 pkill rsync 即可)
[root@B-Server ~]# netstat -anpt | grep 873


2.进行同步备份


  • 本地备份: 类似于 cp 命令,如:rsync /etc/fstab /opt(将本地文件 /etc/fstab 同步/opt 目录下)


image.png


在 192.168.1.1 上验证:


[root@A-Server ~]# echo "Hello World" > Hello.txt
[root@A-Server ~]# rsync -avz Hello.txt zhangsan@192.168.1.2::PengYuYan       # 远程同步


image.png


image.png



3.结合 CronJob 进行自动备份


1)准备工作:


[root@A-Server ~]# echo "123123" > /etc/server.pass               # 所写的就是 zhangsan 的密码
[root@A-Server ~]# chmod 600 /etc/server.pass
[root@A-Server ~]# mkdir -p /app/mariadb/data                 # 创建要备份的目录
[root@A-Server ~]# echo "Hello World" > /app/mariadb/data/Hello.sql  


2)创建 CronJob,在每天的 22:30 进行自动备份:


[root@A-Server ~]# crontab -e                         # 创建计划任务
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass /app/mariadb/data zhangsan@192.168.1.2::PengYuYan  


3)验证:


[root@A-Server ~]# crontab -l                             # 查看计划任务
[root@A-Server ~]# date -s "2022-04-23 22:29:58"                  # 配置时间. 方便验证
[root@A-Server ~]# date                             # 查看当前时间


image.png


image.png



三、通过 Inotify + Rsync 实现实时同步



当我们通过计划任务来进行自动备份时,是没有问题的,但是 定时备份这种方式,不好的就是备份时间固定、实时性差,并且当同步的数据长时间没有发生改变时,定时备份就比较浪费存储空间。所以,我们可以通过实时同步来避免上面的问题。


配置实时同步的话,需要使用 Inotify 命令来配合:Inotify 命令可以用来监控文件系统的文件/目录是否改变,如:文件的创建、删除、移动、修改等。使用 Inotify 命令可以很方便的实现文件异动告警、增量备份等操作。


所以,我们可以通过 Inotify 来实时同步(即,只要原始位置的文件发生改变,便立即启动增量同步,否则处于等待状态)


1.配置发起端


1)调整 Inotify 内核参数 (监控事件队列);最多监控实例数;每个实例最多监控文件数:


[root@A-Server ~]# cat /proc/sys/fs/inotify/max_queued_events
16384
[root@A-Server ~]# cat /proc/sys/fs/inotify/max_user_instances
128
[root@A-Server ~]# cat /proc/sys/fs/inotify/max_user_watches
8192


把三个参数数值加大: 监控的目录、文件数量较多或变化频繁


[root@A-Server ~]# cat <<END >> /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
END
[root@A-Server ~]# sysctl -p


2)安装 inotify-tools 软件;以便提供 inotifywait inotifywatch 辅助工具程序


[root@A-Server ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@A-Server ~]# yum -y install epel-release
[root@A-Server ~]# yum -y install inotify-tools


验证: 监控 /opt 目录的变化


[root@A-Server ~]# inotifywait -mrq -e modify,create,move,delete  /app/mariadb/data


image.png


image.png


重新打开一个终端:


[root@A-Server ~]# cd /app/mariadb/data
[root@A-Server data]# 
[root@A-Server data]# ls
Hello.sql
[root@A-Server data]# echo "你好,CSDN-愿许浪尽天涯" > CSDN.txt


回到原来的终端进行查看:


image.png



2.编写自动同步脚本


[root@A-Server ~]# cat <<"END" > /root/sync.sh
#!/bin/bash
Monitor="inotifywait -mrq -e modify,create,attrib,move,delete /app/mariadb/data"
Sync="rsync -azH --delete --password-file=/etc/server.pass /app/mariadb/data zhangsan@192.168.1.2::PengYuYan"
$Monitor | while read DIRECTORY EVERT FILE
do
    $Sync
done
END
[root@B-Server ~]# chmod +x /root/sync.sh


image.png


运行脚本


[root@A-Server ~]# echo "/root/sync.sh" >> /etc/rc.local           # 将脚本配置开机自启
[root@A-Server ~]# nohup /root/sync.sh &                 # 后台运行脚本


3.验证


[root@A-Server ~]# cd /app/mariadb/data/
[root@A-Server data]# echo "CSDN -> 愿许浪尽天涯" > tianya.txt 
[root@A-Server data]# ls
CSDN.txt  Hello.sql  tianya.txt


image.png



在同步端上查看是否同步


image.png


使用上行同步:


image.png


相关文章
|
监控 算法 Unix
rsync远程同步
rsync远程同步
145 0
|
监控 Linux 网络安全
|
6月前
|
存储 监控 网络安全
rsync 远程同步 基础介绍
rsync 远程同步 基础介绍
|
监控 安全 关系型数据库
rsync—远程同步(二)
rsync—远程同步(二)
rsync—远程同步(二)
|
监控 算法 安全
rsync远程同步(上)
一、rsync介绍 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
344 0
|
消息中间件 缓存 监控
rsync远程同步(下)
一、rsync介绍 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
155 0
|
缓存 监控 算法
rsync 远程同步部署——上下行同步
rsync (Remote Sync,远程同步) : 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。 在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。
rsync 远程同步部署——上下行同步
|
安全
Rsync远程同步配置
# rsync服务端配置 # 安装rsync软件包 yum -y install rsync # 生成rsyncd.
890 0
|
分布式计算 Hadoop 开发工具
Rsync 实现远程同步
         介绍   rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
1736 0
|
数据安全/隐私保护 算法 Shell