如果rm -rf
速度很慢,则可能您正在使用“同步”选项或类似选项,它过于频繁地写入磁盘。在带有普通选项的 Linux ext3 上,rm -rf
速度非常快。
一种适用于 Linux 并且可能也适用于各种 Unixen 的快速删除选项是使用循环设备,例如:
hole temp.img $[5*1024*1024*1024] # create a 5Gb "hole" file
mkfs.ext3 temp.img
mkdir -p mnt-temp
sudo mount temp.img mnt-temp -o loop
“hole”程序是我自己编写的,它使用“hole”而不是在磁盘上分配的块来创建一个大的空文件,这要快得多,并且在您真正需要它之前不使用任何磁盘空间。 http://sam.nipl.net/coding/c-examples/hole.c
我刚刚注意到 GNU coreutils 包含一个类似的程序“截断”,所以如果你有,你可以使用它来创建图像:
truncate --size=$[5*1024*1024*1024] temp.img
现在您可以使用 mnt-temp 下的已安装映像进行临时存储,用于您的构建。完成后,执行以下操作将其删除:
sudo umount mnt-temp
rm test.img
rmdir mnt-temp
我想你会发现删除一个大文件比删除很多小文件要快得多!
如果你不想编译我的“hole.c”程序,你可以使用 dd,但这要慢得多:
dd if=/dev/zero of=temp.img bs=1024 count=$[5*1024*1024] # create a 5Gb allocated file