2020年3月4日 星期三

用rsync刪除很大的資料夾

欲刪除裡面有許多檔案的大資料夾(例如說包含了一百萬個檔案、總容量是10T)叫做BigFolder/,使用rm這個指令會等到天荒地老。但使用rsync可在六分鐘內全數刪除:
  1. mkdir blank
  2. rsync -a --delete blank/ BigFolder/
  3. rmdir blank

上述rsync指令將空資料夾blank/BigFolder/同步,並且使用--delete參數代表若沒有相對應到就刪除,故會將BigFolder資料夾給清空。以下是rync各個參數的意義:
  • -a:archive mode,等同於-rlptgoD
  • --delete:刪除目標資料夾裡面多出來檔案
  • -r--recusive,遞迴的處理資料夾
  • -l--links,遇到symlinks在目標資料夾裡面重新建造
  • -p--perms,目標的權限要和來源一樣
  • -t:--times,保存檔案原來的更改時間
  • -g--group,保存檔案原來的gid
  • -O--omit-dir-times:排除修改時間比較先前的資料夾

還有另外一招據說更快,但是我在測試的時候用不出來...:
  1. cd BigFolder/
  2. perl -e 'for(<*>){((stat)[9]<(unlink))}'
  3. cd .. && rmdir BigFolder/

參考資料

_EOF_

沒有留言:

張貼留言