假如你要在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實際上用的就是替換原理
你可以用 rm -f *.log 引數列表太長
只需要乙個命令就可以搞定
ls *.log | xargs rm -f
剛把乙個包含幾萬個檔案的目錄乾掉(/var/log/samba),試試看。
注:用rm -fr (路徑+要刪檔案)也可以。
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 ...