linux下快速刪除大量檔案

2021-07-22 04:19:31 字數 1988 閱讀 1580

假如你要在linux下刪除大量檔案,比如100萬、1000萬,像/var/spool/clientmqueue/的mail郵件,

像/usr/local/nginx/proxy_temp的nginx快取等,那麼rm -rf *可能就不好使了。

rsync提供了一些跟刪除相關的引數

rsync –help | grep delete

–del an alias for –delete-during

–delete delete files that don』t exist on the sending side

–delete-before receiver deletes before transfer (default)

–delete-during receiver deletes during transfer, not before

–delete-after receiver deletes after transfer, not before

–delete-excluded also delete excluded files on the receiving side

–ignore-errors delete even if there are i/o errors

–max-delete=num don』t delete more than num files

其中–delete-before 接收者在傳輸之前進行刪除操作

可以用來清空目錄或檔案,如下:

1、先建立乙個空目錄

mkdir /data/blank

2、用rsync刪除目標目錄

rsync –delete-before -d /data/blank/ /var/spool/clientmqueue/

這樣目標目錄很快就被清空了

又假如你有一些特別大的檔案要刪除,比如nohup.out這樣的實時更新的檔案,動輒都是幾十個g上百g的,也可

以用rsync來清空大檔案,而且效率比較高

1、建立空檔案

touch /data/blank.txt

2、用rsync清空檔案

rsync -a –delete-before –progress –stats /root/blank.txt /root/nohup.out

building file list …

1 file to consider

blank.txt

0 100% 0.00kb/s 0:00:00 (xfer#1, to-check=0/1)

number of files: 1

number of files transferred: 1

total file size: 0 bytes

total transferred file size: 0 bytes

literal data: 0 bytes

matched data: 0 bytes

file list size: 27

file list generation time: 0.006 seconds

file list transfer time: 0.000 seconds

total bytes sent: 73

total bytes received: 31

sent 73 bytes received 31 bytes 208.00 bytes/sec

total size is 0 speedup is 0.00

tips:

當src和dest檔案性質不一致時將會報錯

當src和dest性質都為檔案【f】時,意思是清空檔案內容而不是刪除檔案

當src和dest性質都為目錄【d】時,意思是刪除該目錄下的所有檔案,使其變為空目錄

最重要的是,它的處理速度相當快,處理幾個g的檔案也就是秒級的事

最核心的內容是:rsync實際上用的就是替換原理

linux下快速刪除大量檔案

假如你要在linux下刪除大量檔案,比如100萬 1000萬,像 var spool clientmqueue 的mail郵件,像 usr local nginx proxy temp的nginx快取等,那麼rm rf 可能就不好使了。rsync提供了一些跟刪除相關的引數 rsync help gr...

Linux下快速刪除大量檔案

昨天遇到乙個問題,在linux中有乙個資料夾裡面含有大量的cache檔案 夾 數量級可能在百萬級別,使用rm rf 刪除時間慢到不可接受。google了一下,查到了一種方法,試用了下確實比單純使用rm快了乙個數量級。方法見下 1 首先建立乙個空白資料夾。mkdir tmp empty 2 之後使用以...

Linux下刪除大量檔案

主要參考了 首先建立50萬個檔案 test for i in seq 1500000 do echo text i.txt done test time rm f zsh sure you want to delete all the files in home hungerr test yn y ...