rsync --delete 參數詳解與清空目錄實務

介紹 rsync --delete 的作用、常見用法與注意事項,並提供以空目錄快速清理目標目錄的實務示例。

rsync --delete 的核心作用是:刪除目標目錄中「來源目錄不存在」的檔案,讓目標端與來源端保持一致。

它常用於以下場景:

  • 同步時清理目標端的歷史冗餘檔案
  • 透過空目錄快速清空目標目錄

基礎語法

1
rsync -a --delete 來源目錄/ 目標目錄/
  • -a:封存模式,保留權限、時間戳等屬性
  • --delete:刪除目標端多出的檔案

關鍵注意:來源目錄 結尾是否帶 / 會影響同步行為。帶 / 代表同步目錄內容,不帶 / 代表同步目錄本身。

用空目錄快速清空目標目錄

如果你的目標是「保留目錄結構但清空內容」,可以讓空目錄作為來源進行同步:

1
2
3
4
5
# 1) 建立空目錄
mkdir -p /tmp/empty_dir

# 2) 同步並刪除目標目錄中的內容
rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/

這種方式在大目錄場景下通常比逐一刪除更有效率,也更容易寫入自動化腳本。

常用擴展參數

  • --delete-before:先刪除再傳輸,在部分場景下效率更高
  • --progress:顯示傳輸與處理進度

示例(清理 Nginx 日誌目錄):

1
rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/

使用建議

  • 先用 --dry-run 預演,確認刪除範圍再執行
  • 在生產環境操作前,建議先備份目標目錄
  • 對關鍵路徑執行時,優先安排在低峰時段
记录并分享
使用 Hugo 建立
主題 StackJimmy 設計