Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

使用 rsync 實現 Linux 到 Windows 跨平台增量備份完整實戰指南

編輯:關於伺服器

公司網站資料量 30GB+,傳統 FTP 全量備份耗時數小時、佔用大量頻寬與磁碟 IO,且無法滿足「保留 3 天歷史版本」的儲存需求。引入 rsync 增量備份:僅傳輸變更塊、保留權限屬性、支援 SSH 加密傳輸、配合 cwRsync 在 Windows 端拉取,單次備份從小時級縮減至分鐘級,磁碟佔用大幅下降。本文記錄完整部署流程。

架構設計

角色OSIP軟體方向
來源端 (Web Server)Linux (CentOS 7)10.0.0.10rsync (daemon 模式)推送/被拉取
目的端 (Backup Server)Windows Server 201610.0.0.20cwRsync (客戶端)拉取

步驟一:Linux 端安裝與配置 rsync daemon

# 1. 安裝 rsync (CentOS/RHEL)
yum -y install rsync

# 2. 建立配置檔 /etc/rsyncd.conf
cat > /etc/rsyncd.conf <<'EOF'
uid = root
gid = root
use chroot = no
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
timeout = 300

[webroot]
    path = /home/wwwroot
    comment = Web Root Backup
    read only = true
    list = false
    hosts allow = 10.0.0.20   # 僅允許備份伺服器 IP
    hosts deny = *
    # auth users = backupuser  # 若需密碼驗證,取消註解並建立密碼檔
    # secrets file = /etc/rsyncd.secrets
EOF

# 3. 若啟用密碼驗證
# echo "backupuser:StrongPassword123" > /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets  # 必須 600,否則 rsync 拒絕啟動

# 4. 建立日誌目錄並啟動
mkdir -p /var/log
systemctl start rsyncd
systemctl enable rsyncd

# 5. 防火牆開放 873 埠
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

步驟二:Windows 端安裝 cwRsync 客戶端

  1. 下載 cwRsync Free Edition (含 rsync.exe, ssh.exe, cygwin1.dll 等)。
  2. 安裝至預設路徑 (如 C:\Program Files\cwRsync)。
  3. 將安裝目錄加入系統環境變數 PATH,或在腳本中使用完整路徑。

步驟三:編寫 Windows 端拉取備份腳本 (backup_rsync.bat)

@echo off
setlocal enabledelayedexpansion

:: ========== 配置區 ==========
set RSYNC="C:\Program Files\cwRsync\bin\rsync.exe"
set SRC_MODULE=webroot
set SRC_SERVER=10.0.0.10
set DEST_ROOT=F:\Backup\WebServer
set LOG_FILE=F:\Backup\Logs\rsync_%date:~,4%%date:~5,2%%date:~8,2%.log
:: =============================

mkdir "%DEST_ROOT%" 2>nul
mkdir "%DEST_ROOT%\..\Logs" 2>nul

echo [%date% %time%] Starting rsync pull from %SRC_SERVER%::%SRC_MODULE% >> "%LOG_FILE%"

:: -a: 保留權限、時間、符號連結等 (archive)
:: -v: 詳細輸出
:: -z: 壓縮傳輸
:: -h: 人類可讀進度
:: --progress: 顯示進度
:: --delete: 刪除目的端已不存在於來源的檔案 (鏡像模式)
:: --bwlimit=10000: 限制頻寬 10MB/s (避免佔滿業務頻寬,視需求調整)
:: --exclude: 排除快取/日誌/暫存目錄

%RSYNC% -avzh --progress --delete --bwlimit=10000 ^
    --exclude="runtime/" ^
    --exclude="cache/" ^
    --exclude="logs/" ^
    --exclude="*.log" ^
    --exclude="tmp/" ^
    "%SRC_SERVER%::%SRC_MODULE%/" "%DEST_ROOT%/" >> "%LOG_FILE%" 2>&1

SET RSYNC_EXIT=%ERRORLEVEL%
echo [%date% %time%] Rsync finished with exit code %RSYNC_EXIT% >> "%LOG_FILE%"

:: 簡單保留最近 30 天日誌
forfiles /p "%DEST_ROOT%\..\Logs" /m rsync_*.log /d -30 /c "cmd /c del @path" 2>nul

exit %RSYNC_EXIT%

步驟四:排程自動執行 (Windows 工作排程器)

  1. 開啟「工作排程器」→「建立基本任務」。
  2. 觸發器:每日 / 每 6 小時 / 自訂 (視 RPO 需求)。
  3. 動作:啟動程式 → 選擇 backup_rsync.bat,起始位置設為腳本所在目錄。
  4. 條件/設定:勾選「如果工作已經在執行,則不啟動新執行個體」。

步驟五:驗證與常見問題

問題原因與解決
權限拒絕 / Permission deniedLinux 端 path 目錄權限不足,確保 rsync daemon 運行身分 (uid/gid) 可讀取;Windows 端執行排程的帳號需有目的目錄寫入權限。
密碼檔權限錯誤/etc/rsyncd.secrets 必須 chmod 600,且擁有者為 rsync daemon 運行用戶。
連線逾時檢查防火牆 (Linux: 873/tcp, Windows: 輸出 873)、雲廠商安全群組、VPN/專線連通性。
增量備份未生效 (每次全量傳輸)確認使用 -a (含 -t 保留修改時間);檢查來源/目的端檔案系統時間是否同步 (NTP);避免掛載參數導致 mtime 異常。
符號連結/硬連結備份異常加上 -H (保留硬連結) -A (保留 ACL) -X (保留擴充屬性) 視需求決定。

進階:保留多版本歷史備份 (Snapshot 風格)

rsync 本身不提供版本保留,但可結合 --link-dest 實現硬連結快照:

# 每次備份前建立新目錄名 (日期時間)
NEW_DEST="F:\Backup\Snapshots\web_%date:~,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
LATEST_LINK="F:\Backup\Snapshots\latest"

%RSYNC% -avzh --delete --link-dest="%LATEST_LINK%" ^
    "%SRC_SERVER%::%SRC_MODULE%/" "%NEW_DEST%/" >> "%LOG_FILE%" 2>&1

:: 更新 latest 連結 (需支援符號連結的檔案系統/工具)
:: Windows 原生不支援 link-dest 硬連結,建議在 Linux 端推送或使用專用備份軟體 (BorgBackup, Restic, Duplicacy)

注意: Windows NTFS 支援硬連結,但 cwRsync 的 --link-dest 相容性不穩。企業級版本保留建議:Linux 端推送至備份儲存 (同為 Linux/NAS),或使用 Restic/BorgBackup/Duplicacy 等現代備份工具原生支援加密、去重、版本保留、跨平台。


rsync + cwRsync 是「低成本、快速落地」的跨平台增量備份經典組合。核心優勢:**只傳差異、保留屬性、支援 SSH/daemon 兩種模式、腳本化易自動化**。配合頻寬限制、排除規則、日誌輪轉、監控告警,即可構建穩定可靠的異地備份體系。對於版本保留、加密、去重等進階需求,建議遷移至 Restic/BorgBackup 等現代工具。

Copyright © Windows教程網 All Rights Reserved