16.6 Rsync 数据同步

Rsync 概述

Rsync(Remote Sync,远程同步)是由 Andrew Tridgell 开发的高效文件同步工具。Rsync 采用增量传输算法(delta-transfer algorithm),仅传输文件中发生变化的部分,显著减少网络带宽消耗与同步时间,是系统备份与数据镜像的常用工具。其算法通过计算文件块的校验和来确定差异,实现高效数据同步。

环境概述

在开始配置之前,先了解本节将使用的环境。首先介绍本节配置中涉及的两台服务器。

  • 服务器 A(发起端、客户端):192.168.179.128

  • 服务器 B(同步源、服务端):192.168.179.150

设计需求:将服务器 B 的数据同步到服务器 A,即 B(服务端) → A(客户端),将服务器 B 的数据完整镜像到服务器 A。

服务器 B(同步源)配置

首先配置同步源服务器,即服务器 B。

安装 rsync

在服务器 B 上安装 rsync,有两种方式可供选择:

  • 使用 pkg 安装:

  • 或使用 Ports 安装:

安装后信息查看

同步目录准备

服务端主配置文件

编辑 /usr/local/etc/rsync/rsyncd.conf 文件,写入:

创建授权备份账户认证的密码文件 (服务端)

  • 编辑 /etc/rsyncd_users.db 文件,写入:

注意

服务端的密码文件应该包含用户名和密码的映射关系。格式为 授权账户用户名:密码

  • 限制数据文件权限,否则会报错:

设置 rsync 用户数据库文件的权限为仅所有者可读写。

服务启动配置

服务端口验证

查看 rsync 服务正在使用的网络端口和对应进程:

服务器 A(发起端)配置

要求读者安装好 rsync。

本地备份目录配置

创建本地备份目录 /home/testBackUp/ 并设置相应权限:

同步操作(密码输入方式)

将文件下载到本地 /home/testBackUp/ 下载目录下,需要手动输入密码。

testcom 是在 /usr/local/etc/rsync/rsyncd.conf 中自定义的同步模块名称,对应服务器上的目录。

附录:指定密码文件方式

创建授权备份账户认证的密码文件(客户端)。

  • 编辑客户端的 /etc/rsyncd_users.db 文件,仅写入密码:

  • 限制权限,否则报错 ERROR: password file must not be other-accessible

设置 rsync 用户数据库文件权限为仅所有者可读写。

注意

格式为密码,客户端应仅包含密码。

进行同步。

使用 rsync 将远程 testcom 模块同步到本地备份目录,并显示同步进度,同时指定密码文件。

同步结果验证

列出本地备份目录中的详细文件信息:

课后习题

  1. 在 FreeBSD 上配置 rsync 基于 SSH 的同步方式,创建脚本实现自动定时备份,验证增量传输功能并比较与 daemon 模式的差异。

  2. 分析 rsync 的增量传输算法,查看其文件块校验与差异识别机制,读者是否有更优的算法实现。

  3. 修改 rsyncd 的默认配置,启用压缩功能并调整块大小,验证同步性能变化。

最后更新于