天天看點

linux 大量删除小檔案,Linux 快速删除大量小檔案方法

當我們在linux系統中要删除數萬或者數十萬甚至數百萬的檔案時使用rm -rf *就不太好用,因為要等待很長一段時間。在這種情況之下我們可以使用linux系統指令rsync來巧妙的處理。rsync實際上用的是替換原理,處理數十萬個檔案也是秒删。

1. rsync安裝,有些系統預設安裝有該指令

Ubuntu系統:sudo apt-get install rsync

Fedora 系統:sudo yum install rsync

其他的可以源碼安裝,到下面的網站下載下傳http://rsync.samba.org

2. rsync提供了一些跟删除有關的參數

rsync --help | grep delete

--del                                an alias for --delete-during

--delete                          delete extraneous files from destination dirs

--delete-before            receiver deletes before transfer, not during

--delete-during            receiver deletes during transfer (default)

--delete-delay              find deletions during, delete after

--delete-after                receiver deletes after transfer, not during

--delete-excluded        also delete excluded files from destination dirs

--ignore-errors            delete even if there are I/O errors

--max-delete=NUM    don't delete more than NUM files

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

3. 示例

清空目錄或檔案,如下:

1、先建立一個空目錄

mkdir /data/blank

2、用rsync删除目标目錄

rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/

或者

rsync --delete-before -d /data/blank/ /var/edatacache/

這樣/var/edatacache目錄就被快速的清空了。

選項說明:

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

–progress          在傳輸時顯示傳輸過程

-a                      歸檔模式,表示以遞歸方式傳輸檔案,并保持所有檔案屬性

-H                      保持硬連接配接的檔案

-v                      詳細輸出模式

–stats                給出某些檔案的傳輸狀态

-d                      transfer directories without recursing