當我們在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