会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 一文搞懂 rsync:原理剖析 + Rocky Linux 主机同步部署实战!

一文搞懂 rsync:原理剖析 + Rocky Linux 主机同步部署实战

时间:2025-11-04 21:12:57 来源:益强数据堂 作者:系统运维 阅读:954次

今天分享一下rsync数据同步工具。文搞

在日常运维中,原理数据同步 是剖析一个极其常见的任务。无论是主机备份、部署、同步迁移、部署内容分发,实战rsync 几乎是文搞 Linux 下的首选工具。

今天,原理我将介绍rsync的剖析理论基础,并手把手部署一次基于 两台 Rocky Linux 主机 的主机生产级同步方案。

一、同步什么是部署 rsync?

rsync(remote sync) 是一个快速且功能强大的文件同步工具,支持本地与远程同步,实战采用“增量同步算法”,文搞仅同步变化部分,性能非常高效。它的核心优势在于:

增量同步:只传输变更部分,节省带宽支持压缩:可减少传输数据量支持多种协议:本地、SSH、亿华云计算rsync 守护进程等支持断点续传、权限保留、删除同步等高级特性

可运行在两种模式下:

命令行模式(push/pull):使用 rsync 命令手动或定时执行同步。服务端守护模式(daemon):以守护进程方式运行,支持匿名或认证客户端访问共享模块。

二、核心工作原理

利用 “rsync算法” 比较源与目标文件内容,只传输差异数据块。使用 SSH、RSH 或 rsync 协议 作为传输通道。

这种“块级差异传输 + 校验算法”机制,让 rsync 同步比 cp/scp 更高效、稳定,尤其适用于大文件、慢网速、跨地部署等场景。

三、实验部署

1. 环境准备

角色

主机名

IP 地址

系统版本

源服务器

webserver

10.0.0.110

Rocky Linux 9.4

目标服务器

backupserver

10.0.0.111

Rocky Linux 9.4

目标:将 /var/www/html/ 目录内容,每小时自动同步到 /data/backup/web/。

2. 源服务器配置

(1) 准备数据

这里是实验环境,生产环境就根据自己需要同步的目录就可以

复制# 安装httpd yum install httpd # 上传一些文件到/var/www/html下1.2.3.4.

(2) 安装 rsync

复制sudo dnf install rsync -y1.

(3) 创建 rsync 配置文件

复制vi /etc/rsyncd.conf1.

添加下面的内容:

复制# 指定rsync守护进程运行时的用户身份(为了安全,一般设为nobody) uid = nobody # 指定rsync守护进程运行时的组身份 gid = nobody # 是否启用chroot(默认是yes),设置为no可避免对文件路径限制,高防服务器有利于备份大路径结构 use chroot = no # 最大并发连接数,超出连接将被拒绝,防止资源耗尽 max connections = 20 # rsync守护进程运行时的日志文件 log file = /var/log/rsyncd.log # PID文件路径,用于进程管理 pid file = /var/run/rsyncd.pid # 守护进程监听的端口,默认873,确保防火墙已放通 port = 873 # 认证用户,仅这些用户可以访问该模块(对应下面的secrets file) auth users = rsyncuser # 指定认证文件,格式为:用户名:密码,一行一个用户 secrets file = /etc/rsync.password # 是否启用日志记录同步的文件详细信息 transfer logging = yes # 设置为只读,客户端只能拉取数据 read only = false # 是否允许客户端查看该模块(可选 list = yes # 设置白名单,只允许设置的网段进行访问 hosts allow = 10.0.0.0/24 # 设置黑名单,限制访问 hosts deny = 0.0.0.0/32 # 在进行数据备份传输过程过程中,忽略一些I/O产生的传输错误 ignore errors [webdata] # 模块名,客户端使用 ::webdata 来访问这个模块 path = /var/www/html # 实际要共享的本地目录 comment = Web site sync # 模块说明,可选 # 可以添加多个模块1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.

【温馨提示】建议在写配置文件时将注释去掉,可能会影响某些参数生效

(4) 创建认证文件

复制# 生产环境密码复杂度设置高一点,我设置为123456 echo "rsyncuser:123456" > /etc/rsync.password chmod 600 /etc/rsync.password1.2.3.

(5) 创建并启用 systemd 服务文件

复制cat >> /etc/systemd/system/rsyncd.service << EOF [Unit] Description=Rsync Daemon After=network.target [Service] ExecStart=/usr/bin/rsync --daemon --no-detach ExecReload=/bin/kill -HUP $MAINPID Restart=always [Install] WantedBy=multi-user.target EOF1.2.3.4.5.6.7.8.9.10.11.12.13.

启用并启动服务:

复制systemctl daemon-reload systemctl enable --now rsyncd1.2.

(6) 开启防火墙端口

复制sudo firewall-cmd --add-port=873/tcp --permanent sudo firewall-cmd --reload # 或者直接关闭防火墙1.2.3.4. 3. 目标服务器配置

(1) 安装 rsync

复制dnf install rsync -y1.

(2)  创建并启用 systemd 服务文件

复制cat >> /etc/systemd/system/rsyncd.service << EOF [Unit] Descriptinotallow=Rsync Daemon After=network.target [Service] ExecStart=/usr/bin/rsync --daemon --no-detach ExecReload=/bin/kill -HUP $MAINPID Restart=always [Install] WantedBy=multi-user.target EOF1.2.3.4.5.6.7.8.9.10.11.12.13.

启用并启动服务:

复制systemctl daemon-reload systemctl enable --now rsyncd1.2.

(3) 创建密码文件

复制echo "123456" > /etc/rsync.password chmod 600 /etc/rsync.password1.2.

(4) 手动执行同步测试

复制# 创建备份目录 mkdir /backup/web -p # 传输测试 rsync -avz --delete --password-file=/etc/rsync.password \ rsyncuser@10.0.0.110::webdata /backup/web1.2.3.4.5.6.

以上操作就可以实现文件同步功能了,下面将设置一个定时同步脚本,实现定时同步

4. 自动化定时同步

在backupserver上操作

(1) 创建同步脚本 /usr/local/bin/web_sync.sh

复制#!/bin/bash rsync -az --password-file=/etc/rsync.password \ rsyncuser@10.0.0.110::webdata /backup/web/ \ >> /var/log/rsync_sync.log 2>&11.2.3.4.

赋予权限:

复制chmod +x /usr/local/bin/web_sync.sh1.

(2) 添加定时任务

复制crontab -e1.

添加:

复制# 每小时同步一次 0 * * * * /bin/sh /usr/local/bin/web_sync.sh1.2.

这样就可以实现每小时同步一次了,如果你想实时同步怎么做了?

别急,下篇文章就将介绍inotify+rsync实现文件实时同步。源码库

(责任编辑:IT科技)

推荐内容
  • 体验SkullcandyInkd耳机的音质和舒适度(探索这款耳机的优缺点并提供全面评价)
  • 明基昆吾剑(揭秘明基昆吾剑的历史传承和精湛工艺)
  • 探索安卓火狐浏览器的卓越表现(以速度与安全为核心的新一代移动浏览器)
  • 五菱宏光S——平民之选的领头羊(年轻、实用、经济——宏光S给你带来全方位驾驶体验)
  • 解读电脑显示内存错误代码的意义(探索内存错误代码背后的故障原因与解决方法)
  • 索尼A6000直出的画质表现如何?(一款小巧轻便的相机,是否能够满足专业摄影师的需求?)