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

Linux 用 rsync 秒刪海量小檔案:--delete-before 參數實戰教學

編輯:關於 Linux

面對數十萬甚至上百萬個小檔案,rm -rf 往往因 inode 遍歷極慢而卡住。rsync 的 --delete-before 機制可先建立空目錄同步,實現「秒級」清空目錄或清空大檔案內容。

rsync 刪除示意圖

安裝 rsync

# Ubuntu/Debian
sudo apt-get install rsync

# CentOS/RHEL/Fedora
sudo yum install rsync

核心刪除參數說明

參數行為
--delete-before傳輸前刪除目標端多餘檔案(最快)
--delete-during傳輸過程中刪除(預設)
--delete-after傳輸完成後刪除
--delete-delay掃描階段標記,傳輸後刪除

實戰範例 1:清空目錄 /var/edatacache

# 1. 建立空目錄
mkdir /data/blank

# 2. 同步刪除(保留屬性、硬連結、顯示進度)
rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/

# 精簡版(僅刪除檔案,不保留屬性)
rsync --delete-before -d /data/blank/ /var/edatacache/

參數解析

  • -d:不遞迴,僅處理目錄本身
  • -a:歸檔模式(-rlptgoD),保留權限、時間、擁有者等
  • -H:保留硬連結
  • -v:詳細輸出
  • --progress:顯示傳輸進度
  • --stats:顯示統計資訊

實戰範例 2:清空超大檔案 /root/data (數十 GB)

# 1. 建立空檔案
touch /root/empty

# 2. 同步清空檔案內容(非刪除檔案本身)
rsync --delete-before -d --progress --stats /root/empty /root/data

關鍵注意事項

  • SRC 與 DEST 型態必須一致:目錄對目錄、檔案對檔案,否則報錯。
  • 檔案對檔案 = 清空內容:檔案仍存在,大小歸零。
  • 目錄對目錄 = 清空目錄:目錄變為空目錄。
  • 若需實際刪除檔案/目錄本身,請改用 rm 或 find -delete。

效能優勢

rsync 採用增量傳輸演算法,配合 --delete-before 先刪除目標端,避免逐一 unlink() 系統呼叫的開銷,對海量小檔案清理速度提升可達 10-100 倍。

Copyright © Windows教程網 All Rights Reserved