假如你要在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 接收者在傳輸之前進(jìn)行刪除操作
可以用來清空目錄或文件,如下:
1、先建立一個空目錄
mkdir /data/blank
2、用rsync刪除目標(biāo)目錄
rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/
這樣目標(biāo)目錄很快就被清空了
又假如你有一些特別大的文件要刪除,比如nohup.out這樣的實(shí)時更新的文件,動輒都是幾十個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:
當(dāng)SRC和DEST文件性質(zhì)不一致時將會報(bào)錯
當(dāng)SRC和DEST性質(zhì)都為文件【f】時,意思是清空文件內(nèi)容而不是刪除文件
當(dāng)SRC和DEST性質(zhì)都為目錄【d】時,意思是刪除該目錄下的所有文件,使其變?yōu)榭漳夸?nbsp;
最重要的是,它的處理速度相當(dāng)快,處理幾個G的文件也就是秒級的事
最核心的內(nèi)容是:rsync實(shí)際上用的就是替換原理