在 linux xfs 上解压带有许多小文件的 7zip,解压速度非常慢。
我的测试系统环境。
- 系统 1:XenServer 上的 2vCore/4GB CentOS 6.5 64 位客户机。
- 系统 2:XenServer 上的 2vCore/4GB Windows 2012 客户机。
大型小文件创建脚本
#!/bin/bash
for i in {1..100000}
do
dd if=/dev/zero of=./dmp/dd$i.dmp bs=1K count=4
done
好的。我在 dmp 目录中获得了 100,000 个 4KB 文件。然后我用 xfs 格式化了 /testfs。
测试
Compression Time on System1 :
# time 7za a dmp.7z ./dmp --> real 0m27.518s
Extraction Time on System1:
# time 7za x dmp.7z -o/testfs --> real 9m5.420s
- 7za use only single core.
- Dirent system call use most of the CPU time.
Extraction Time on System2:
- around 25s
- 7za use multi-core.
我的问题
虽然系统2使用多核,系统1使用单核,但结果相差这么大,我觉得不可靠。我该如何解释呢?
如果我在 Linux 上使用 xfs 提取 7zip 文件,如何加快速度?有什么想法吗?
提前致谢。
答案1
我遇到了同样的问题,解决方法是升级 7z。在 Ubuntu 20.04 LTS 上,您7z
获得的apt install
是 2016 年的。相反,请从官方网站。
对于同一台服务器上包含 60k 个小文件的同一个档案,我将时间从 8 分钟缩短到了 6 秒(!)。
答案2
以下是我为将 Ubuntu 22.04 中的 Nautilus 和 Archive Manager (file-roller) 更新为使用 7-Zip 22.01 所做的事情:
下载https://7-zip.org/a/7z2201-linux-x64.tar.xz
在终端(Ctrl-Alt-T)中复制并粘贴以下命令:
sudo apt-get install p7zip-full
sudo 7z e 7z2201-linux-x64.tar.xz 7z2201-linux-x64.tar
sudo 7z e -o/usr/lib/p7zip -y 7z2201-linux-x64.tar 7zz 7zzs
sudo echo exec /usr/lib/p7zip/7zz '"$@"' > 7z
sudo mv 7z /bin/7z
sudo chmod ugo+rx /usr/lib/p7zip/7zz /usr/lib/p7zip/7zzs /bin/7z