linux

使用 rsync 高效同步两台 Linux 服务器的数据

choyeon
Choyeon
calendar_today
schedule 4 分钟阅读
visibility 187 阅读
使用 rsync 高效同步两台 Linux 服务器的数据

使用 rsync 高效同步两台 Linux 服务器的数据

在日常运维工作中,经常需要在多台服务器之间同步文件或目录。无论是备份关键数据、部署静态资源,还是保持开发与生产环境的一致性,rsync 都是一个强大而可靠的工具。本文将详细介绍如何使用 rsync 在两台 Linux 服务器之间进行高效、安全的文件同步。

什么是 rsync?

rsync(remote sync)是一个用于本地或远程同步文件和目录的命令行工具。它采用“增量传输”算法,只传输源和目标之间差异的部分,极大减少了网络带宽消耗和同步时间。同时,rsync 支持压缩、权限保留、符号链接处理、断点续传等高级功能。

前提条件

假设我们有两台服务器:

  • 源服务器(Source):192.168.1.10,包含要同步的数据 /data/www
  • 目标服务器(Destination):192.168.1.20,希望将数据同步到 /backup/www

两台服务器均运行 Linux(如 CentOS、Ubuntu 等),并已安装 rsyncopenssh-server

若未安装 rsync,可使用以下命令安装:

  • Ubuntu/Debian: sudo apt install rsync
  • CentOS/RHEL: sudo yum install rsync

同步架构图

graph TD
    Source[源服务器 192.168.1.10] -->|rsync over SSH| Destination[目标服务器 192.168.1.20]

SSH 免密登录配置流程

为了实现自动化同步,建议配置从源服务器到目标服务器的 SSH 公钥认证。

graph TD
    A[生成 SSH 密钥对] --> B[复制公钥到目标服务器]
    B --> C[测试免密登录]
    C --> D{登录成功?}
    D --  --> E[继续 rsync 配置]
    D --  --> F[检查 authorized_keys 权限]
    F --> B

自动化同步执行流程

sequenceDiagram
    participant Admin as 运维人员
    participant Src as 源服务器
    participant Dst as 目标服务器

    Admin->>Src: 编写同步脚本 sync-www.sh
    Admin->>Src: 配置 cron 定时任务
    Src->>Dst: 每日凌晨自动执行 rsync
    Dst-->>Src: 返回同步结果
    Src->>Admin: 记录日志到 /var/log/rsync-www.log

第一步:配置 SSH 免密登录(推荐)

为了实现自动化同步,建议配置从源服务器到目标服务器的 SSH 公钥认证。

# 在源服务器执行
ssh-keygen -t rsa -b 4096
ssh-copy-id user@192.168.1.20
ssh user@192.168.1.20  # 应无需密码

第二步:基本 rsync 同步命令

rsync -avz /data/www/ user@192.168.1.20:/backup/www/

注意:源路径末尾的 / 决定是否同步目录内容本身。

第三步:常用选项

选项 说明
-a 归档模式(保留权限、时间等)
-v 详细输出
-z 传输压缩
--delete 删除目标端多余文件
--exclude='*.log' 排除日志文件
-P 显示进度 + 断点续传

第四步:自动化脚本 + cron

创建脚本 /usr/local/bin/sync-www.sh

#!/bin/bash
rsync -avz --delete --exclude='*.log' /data/www/ user@192.168.1.20:/backup/www/ >> /var/log/rsync-www.log 2>&1
echo "[$(date)] Sync completed." >> /var/log/rsync-www.log

设置定时任务:

0 2 * * * /usr/local/bin/sync-www.sh

结语

通过 rsync + SSH + cron 的组合,你可以构建一套轻量、可靠、自动化的跨服务器同步方案。配合 Mermaid 图表,整个流程一目了然,便于团队协作与知识沉淀。

提示:如需实时同步,可结合 inotifywait 监听文件变更事件。

分享

评论

0

发表你的观点

account_circle

需要登录

登录注册 后参与讨论。
chat_bubble_outline

暂无评论

你的观点很有价值,快来抢沙发吧!