Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> linux下快速刪除大量文件

linux下快速刪除大量文件

日期:2017/2/7 14:36:29      編輯:Linux教程
 

在linux下快速刪除大量文件的辦法,使用rsync delete,速度要遠遠快於rm 或者 find 之類的命令。

對於這類沒頭沒尾,沒有說清楚測試環境的故事,哥向來是抱有懷疑態度的。
先百度了一下, 都是只有結論,沒有測試數據。
Google出來的有測試數據,但是測試環境沒寫。
個人感覺和文件系統格式有很大關系。

今天抽空測試了一下:
測試機配置較低,是N年前買的台式機了。
Sata硬盤
Intel(R) Pentium(R) D CPU 3.20GHz
4G內存。
EXT4文件系統:
/dev/mapper/VolGroup-lv_home on /home type ext4 (rw,noatime)
Linux www 2.6.32-220.7.1.el6.i686 #1 SMP Tue Mar 6 21:21:22 GMT 2012 i686 i686 i386 GNU/Linux
CentOS release 6.2 (Final)
rsync version 3.0.6 protocol version 30

創建16/256/ 的目錄結構,最深層目錄中都存放250個文件,每個文件300字節。
Mkdir.php



/**
16 * 256 * 250
*/

for($i=0; $i<=0xF; $i++) {
for($j=0; $j<=0xF; $j++) {
for($m=0; $m<=0xF; $m++) {

$dirname = sprintf("test/%x/%x%x", $i, $j, $m);
//創建目錄
mkdir($dirname, 0755, TRUE);

for($k=-0; $k<250; $k++) {
$filename = sprintf("%s/%d.html", $dirname, $k);
file_put_contents($filename, str_repeat("111", 100) );
}
}
}
}
 


Find 遍歷一次需要35秒:
[modify@www test]$time find ./ -type f |wc -l
1024000

real 0m35.679s
user 0m1.559s
sys 0m9.946s

百度到的 rsync 刪除方法 先創建一個空目錄 empty 然後用rsync同步
[root@www modify]# time rsync --delete-before -d empty/ test/

real 1m13.964s
user 0m1.933s
sys 0m35.384s

google到的 rsync 刪除方法
[modify@www ~]$time rsync -a --delete empty/ test/

real 1m8.685s
user 0m1.919s
sys 0m35.113s

find f delete:
[root@www modify]# time find test/ -type f -delete

real 1m11.396s
user 0m1.484s
sys 0m34.422s

find xargs 單進程肯定比 find delete要慢,因為多了管道。就不測了。

find xargs 16進程,有點投機取巧的感覺,其實就是並發運行了16個rm –Rf來刪除第一層子目錄:
[root@www modify]# cd test/
[root@www test]# time find ./ -maxdepth 1 | xargs -n 1 -P 16 rm -Rf
rm: cannot remove directory: `.'

real 1m3.160s
user 0m1.022s
sys 0m41.364s

rm –rf
[root@www modify]# time rm test/ -Rf

real 1m20.334s
user 0m1.074s
sys 0m32.179s
 

結論:

看起來,各種刪除方式的表現都很接近。

PS:後來發現,每次重復測試,數據都會有一定的浮動。 應該多測幾次取平均值的。。。
PS2: 求xfs的測試數據。 Ext3就算了。網上的文章,可能指的都是ext3。

最後說幾個折衷的方案:
mv 的速度是最快的,低於0.1秒,然後可以放到後台去慢慢刪除(nice -n 20)。
Mkfs 在某種條件下,也是一個不錯的選擇。
 

Copyright © Windows教程網 All Rights Reserved