rsync (Remote Sync) 是 Linux 最強大的增量同步工具,支援本地/遠端、Shell/守護進程傳輸、壓縮、權限保留、斷點續傳。本文系統整理六大工作模式、核心參數速查表、常用實戰範例。
六大工作模式與命令格式
| 模式 | 命令格式 | 觸發條件 | 範例 |
| 1. 本地複製 | rsync [OPT] SRC DEST | SRC/DEST 無單冒號 | rsync -a /data /backup |
| 2. 本地 → 遠端 (Shell) | rsync [OPT] SRC [USER@]HOST:DEST | DEST 含單冒號 : | rsync -avz *.c user@server:src/ |
| 3. 遠端 → 本地 (Shell) | rsync [OPT] [USER@]HOST:SRC DEST | SRC 含單冒號 : | rsync -avz user@server:src/ /data |
| 4. 遠端守護進程 → 本地 | rsync [OPT] [USER@]HOST::SRC DEST | SRC 含雙冒號 :: | rsync -av user@server::www /databack |
| 5. 本地 → 遠端守護進程 | rsync [OPT] SRC [USER@]HOST::DEST | DEST 含雙冒號 :: | rsync -av /databack user@server::www |
| 6. 列出遠端模組 | rsync [OPT] rsync://[USER@]HOST[:PORT]/SRC [DEST] | rsync:// 協議 | rsync -v rsync://server/www |
核心參數速查表 (按功能分類)
| 類別 | 參數 | 說明 |
| 輸出控制 | -v, --verbose | 詳細輸出 |
-q, --quiet | 精簡輸出 |
--progress | 顯示傳輸進度條 |
--stats | 傳輸統計摘要 |
| 傳輸模式 | -a, --archive | 歸檔模式 = -rlptgoD (遞歸、連結、權限、時間、擁有者、群組、設備) |
-r, --recursive | 遞歸目錄 |
-l, --links | 保留軟連結 |
-L, --copy-links | 將軟連結指向實體複製 |
-H, --hard-links | 保留硬連結 |
-W, --whole-file | 整檔複製 (不增量),網路快於本地磁碟時有效 |
| 同步策略 | -u, --update | 僅更新目標較舊檔案 (跳過較新) |
--existing | 僅更新目標已存在檔案 (不建立新檔) |
--delete | 刪除目標端源無的檔案 (鏡像模式) |
--delete-excluded | 同步刪除被排除的檔案 |
--ignore-errors | IO 錯誤也繼續刪除 |
| 檔案過濾 | --exclude=PATTERN | 排除匹配模式 |
--include=PATTERN | 強制包含 (配合 exclude 使用) |
--exclude-from=FILE | 從檔案讀取排除模式 |
--filter='merge FILE' | 進階過濾規則檔 |
| 網路與效能 | -z, --compress | 傳輸壓縮 (慢網路有效) |
-e, --rsh=COMMAND | 指定遠端 Shell (預設 ssh) |
--bwlimit=KBPS | 限制頻寬 (KB/s) |
-P | --partial --progress 斷點續傳+進度 |
| 其他 | --dry-run | 模擬運行,不實際寫入 |
--password-file=FILE | 守護進程認證密碼檔 |
--version | 顯示版本 |
實戰範例精選
# 1. 本地目錄鏡像備份 (刪除目標多餘)
rsync -av --delete /source/ /backup/
# 2. 遠端伺服器增量備份 (SSH, 壓縮, 進度)
rsync -avzP --delete /var/www/ user@backup-server:/backup/www/
# 3. 僅同步特定副檔名 (包含/排除配合)
rsync -av --include="*.php" --include="*/" --exclude="*" /source/ /dest/
# 4. 守護進程模式 (需配置 /etc/rsyncd.conf)
# 伺服器端模組 [www] path=/var/www read only=yes
rsync -av user@server::www /local/backup/
# 5. 限制頻寬 1MB/s,斷點續傳
rsync -avzP --bwlimit=1024 /large/ user@server:/backup/
# 6. 模擬運行確認將傳輸檔案
rsync -avzn --delete /source/ /backup/
rsyncd.conf 伺服器端最小配置
uid = nobody
gid = nogroup
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
[www]
path = /var/www
comment = Web Root
read only = yes
auth users = backup
secrets file = /etc/rsyncd.secrets
# /etc/rsyncd.secrets
backup:password123
# chmod 600 /etc/rsyncd.secrets
常見陷阱
- 末尾斜線
/source/ vs /source:前者同步**內容**,後者同步**目錄本身**。
--delete 配合 --exclude 可能誤刪,建議先 --dry-run。
- 大量小檔案傳輸慢:
-W 整檔複製或打包 tar 傳輸後解壓。
- 權限保留需 root:普通用戶無法保留擁有者/群組,建議伺服器端以 root 運行 rsync daemon。