linux

使用 rsync 高效同步兩台 Linux 服務器的數據

choyeon
Choyeon
calendar_today
schedule 4 分鐘閱讀
visibility 188 閱讀
使用 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 監聽文件變更事件。

以上是關於使用 rsync 在兩個 Linux 服務器之間同步數據的完整指南。根據你的要求,文章中包含了標準的 Mermaid 代碼塊語法來展示流程圖和時序圖。其他類型的圖表(類圖、狀態圖等)在本文中可能不適用,但你可以在其他場景中使用它們來可視化不同的概念或過程。

分享

評論

0

發表你的觀點

account_circle

需要登錄

登錄註冊 後參與討論。
chat_bubble_outline

暫無評論

你的觀點很有價值,快來搶沙發吧!