rsync 常用指令

Votes

Upvotes

1

Upvotes: 1

Downvotes

0

Downvotes: 0

Net votes

+1

Prompt

介紹 rsync 常用指令

Response

下面整理一份 rsync 常用指令(偏 Linux / macOS;你在 WSL 也一樣適用)。

1) 最常用:本機同步(推薦背熟)

rsync -avh SRC/ DST/
  • -a:archive(保留權限/時間/符號連結…,等於常用的「完整同步」)
  • -v:顯示過程
  • -h:人類可讀大小
  • SRC/ 末尾的 / 很重要:代表「同步資料夾內容」而不是整個資料夾本體。

2) 顯示進度 / 大檔案很好用

rsync -avh --progress SRC/ DST/
# 或更簡潔的總覽
rsync -avh --info=progress2 SRC/ DST/

3) 真的同步成一樣:刪除目標多的檔案(小心)

rsync -avh --delete SRC/ DST/

常用在「備份鏡像」,讓 DST 變成跟 SRC 一模一樣。 ⚠️ --delete 會刪目標端多出來的檔案,務必確認 SRC/DST 有沒有打反。

4) 先演練(Dry-run):不會動到檔案

rsync -avh --dry-run --delete SRC/ DST/

建議你每次要加 --delete 前都先跑一次。

5) 排除檔案/資料夾(超常用)

rsync -avh --exclude '.git/' --exclude 'node_modules/' SRC/ DST/

用檔案列規則(更乾淨):

rsync -avh --exclude-from=.rsyncignore SRC/ DST/

6) 遠端同步(SSH)

本機 → 遠端:

rsync -avh -e ssh SRC/ user@host:/path/DST/

遠端 → 本機:

rsync -avh -e ssh user@host:/path/SRC/ DST/

指定 SSH 連線參數(例如 Port 2222):

rsync -avh -e "ssh -p 2222" SRC/ user@host:/path/

7) 只同步「差異」更明顯:校驗 / 更新策略

只覆蓋更新的檔案(依時間戳/大小):

rsync -avh --update SRC/ DST/

用 checksum 判斷(更準但更慢,因為要算 hash):

rsync -avh --checksum SRC/ DST/

8) 只同步特定檔案型別(include/exclude 技巧)

例如只同步 .csv

rsync -avh --include='*/' --include='*.csv' --exclude='*' SRC/ DST/

9) 控制權限/擁有者(備份到不同機器常用)

避免同步 owner/group(一般非 root、跨機器很常用):

rsync -avh --no-owner --no-group SRC/ DST/

只想保留時間戳、不要權限:

rsync -rltvh SRC/ DST/
  • -r 遞迴
  • -l 符號連結
  • -t 時間戳

10) 斷線續傳 / 大檔更穩

rsync -avh --partial --inplace SRC/ DST/
  • --partial 保留未完成的暫存
  • --inplace 直接寫回原檔(某些情境更省空間;但也可能讓中途中斷的檔案暫時處於不完整狀態)

更保守常用:

rsync -avh --partial --append-verify SRC/ DST/

11) 看看 rsync 會「做什麼」(輸出更清楚)

列出會變更的檔案:

rsync -avh --itemize-changes SRC/ DST/

12) 典型備份範例(你可以直接套)

把專案備份到另一個資料夾,排除 cache/大型依賴,並保持鏡像一致:

rsync -avh --delete \
  --exclude '.git/' \
  --exclude 'node_modules/' \
  --exclude '__pycache__/' \
  --exclude '.venv/' \
  /path/project/ /backup/project/

如果你跟我說你的情境是:

  • 「本機 ↔ NAS」還是「WSL ↔ Windows」還是「手機當主儲存 + 多裝置同步」 我可以直接幫你組一條最安全、最不容易刪錯檔的 rsync 指令(含 dry-run 流程)。

Comments

Login to add a comment.

No comments yet.