我目前面临的问题是,在处理包含大量文件的目录时,
du
命令需要花费很长时间。
我正在使用该命令来计算目录的总大小。
文件总数:956878
这是我一直在使用的命令:
root@DEB-NUC11PAH-G6PA2500045B:~# time du --total /var/lib/docker/volumes/data.vol/_data/out/priority.images | tail -n 1 | cut -f1
1710732
real 0m4.255s
user 0m0.671s
sys 0m2.453s
在本例中,该命令的执行时间约为 4.428 秒。
我非常感谢社区关于优化
du
命令或替代方法以有效计算包含大量文件的目录总大小的任何建议或建议。
Linux
du
命令的大多数实现已经得到了相当好的优化。大部分时间都花在内核等待文件系统 I/O 上。为了加快速度,您的选择是:
使用 tmpfs 文件系统将数据存储在内存中。
du
tmpfs 上的速度非常快。
将数据存储在 SSD(而不是 HDD)上。
使用 Linux 支持的不同文件系统。我认为默认的 ext4 文件系统即使在 HDD 上也相当快(但我没有任何基准测试结果来支持这一说法)。您已经在使用 ext4 了吗? (检查 /proc/mounts
的内容,但它可能会变得复杂,请在 unix.stackexchange.com 上提出单独的问题。)