問(wèn)題詳情
在業(yè)務(wù)運(yùn)行時(shí)空郊,沒(méi)有制定日志清除規(guī)則擂涛,導(dǎo)致在日志目錄下保存了大量的日志文件窄赋。在使用rm -rf $dir
刪除舊的日志時(shí)僚纷,會(huì)提示-bash: /bin/rm: Argument list too long
,通過(guò)ls |xargs rm -rf
也可以進(jìn)行刪除,但是會(huì)耗費(fèi)大量的時(shí)間。在網(wǎng)上找到一種快速刪除大量文件的方法rsync
础钠,有點(diǎn)類似MySQL
的truncate table
恰力。
具體操作方法
# 先創(chuàng)建一個(gè)空目錄
# 注意:最好是用和被清空目錄的所有者(用戶)去創(chuàng)建這個(gè)空目錄,使用的命令會(huì)將空目錄的權(quán)限帶過(guò)去
mkdir /tmp/empty
# 清除目標(biāo)目錄的文件,不要忘記目錄后面的`/`
rsync --delete-before -av /tmp/empty/ /var/log/target/
選項(xiàng)說(shuō)明
-delete-before 接收者在傳輸之前進(jìn)行刪除操作
-a 歸檔模式旗吁,表示以遞歸方式傳輸文件踩萎,并保持所有文件屬性
-v 詳細(xì)輸出模式
rsync快的原因
rm刪除內(nèi)容時(shí),將目錄的每一個(gè)條目逐個(gè)刪除(unlink)很钓,需要循環(huán)重復(fù)遍歷很多次香府;
rsync刪除內(nèi)容時(shí),建立好新的空目錄码倦,替換掉老目錄企孩,不需要進(jìn)行大量的遍歷操作。