隨筆-314  評論-209  文章-0  trackbacks-0
          [轉(zhuǎn)載]http://www.aygfsteel.com/hongqiang/archive/2012/07/12/382939.html
          假如你要在linux下刪除大量文件,比如100萬、1000萬,像/var/spool/clientmqueue/的mail郵件, 
          像/usr/local/nginx/proxy_temp的nginx緩存等,那么rm -rf *可能就不好使了。 
          rsync提供了一些跟刪除相關(guān)的參數(shù) 
          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、創(chuàng)建空文件 
          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文件性質(zhì)不一致時將會報錯 
          當SRC和DEST性質(zhì)都為文件【f】時,意思是清空文件內(nèi)容而不是刪除文件 
          當SRC和DEST性質(zhì)都為目錄【d】時,意思是刪除該目錄下的所有文件,使其變?yōu)榭漳夸?nbsp;
          最重要的是,它的處理速度相當快,處理幾個G的文件也就是秒級的事 
          最核心的內(nèi)容是:rsync實際上用的就是替換原理 
          另外一種方式:利用xagr與ls結(jié)合
          ls | xargs -n 20 rm -fr
          ls當然是輸出所有的文件名(用空格分割)
          xargs就是將ls的輸出,每20個為一組(以空格為分隔符),作為rm -rf的參數(shù)
          也就是說將所有文件名20個為一組,由rm -rf刪除,這樣就不會超過命令行的長度了
          posted on 2016-02-14 11:05 xzc 閱讀(368) 評論(1)  編輯  收藏 所屬分類: linux/unix

          評論:
          # re: linux下一次性刪除大量文件方法 2016-02-14 14:56 | xzc
          rsync -a --delete blanktest/ inf_ws_exchange_log_bak/  回復  更多評論
            
          主站蜘蛛池模板: 绥德县| 外汇| 南郑县| 宣威市| 罗田县| 武强县| 三穗县| 香格里拉县| 伊春市| 武义县| 东明县| 宣城市| 始兴县| 汝阳县| 上林县| 德兴市| 鄢陵县| 常州市| 阿鲁科尔沁旗| 榆中县| 隆回县| 安远县| 稷山县| 察隅县| 龙泉市| 泸西县| 铁岭市| 仪陇县| 凤城市| 京山县| 英吉沙县| 延津县| 罗平县| 肇东市| 鱼台县| 伊吾县| 文化| 清苑县| 凤台县| 新郑市| 鹤山市|