面對數十萬甚至上百萬個小檔案,rm -rf 往往因 inode 遍歷極慢而卡住。rsync 的 --delete-before 機制可先建立空目錄同步,實現「秒級」清空目錄或清空大檔案內容。
# Ubuntu/Debian
sudo apt-get install rsync
# CentOS/RHEL/Fedora
sudo yum install rsync
| 參數 | 行為 |
|---|---|
--delete-before | 傳輸前刪除目標端多餘檔案(最快) |
--delete-during | 傳輸過程中刪除(預設) |
--delete-after | 傳輸完成後刪除 |
--delete-delay | 掃描階段標記,傳輸後刪除 |
# 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:顯示統計資訊# 1. 建立空檔案
touch /root/empty
# 2. 同步清空檔案內容(非刪除檔案本身)
rsync --delete-before -d --progress --stats /root/empty /root/data
rm 或 find -delete。rsync 採用增量傳輸演算法,配合 --delete-before 先刪除目標端,避免逐一 unlink() 系統呼叫的開銷,對海量小檔案清理速度提升可達 10-100 倍。