我用
tar-cJvf结果文件.tar.xz 要压缩的文件
创造tar.xz
和
焦油-xzvf结果文件.tar.xz
将存档解压到当前目录中。在这两种情况下如何使用多线程?我不想安装任何实用程序。
答案1
tar -c -I 'xz -9 -T0' -f archive.tar.xz [list of files and folders]
这会将文件和目录列表压缩到.tar.xz
存档中。它通过指定要传递给xz
子进程的参数来压缩 tar 存档。
这是使用-I
tar 的参数来完成的,它告诉tar
使用什么程序来压缩 tar 存档,以及传递给它什么参数。指示使用最大压缩-9
。xz
指示使用与 CPU 一样多的线程-T0
。xz
2024 年 1 月的更新:
即使使用多线程选项,也xz
几乎无法扩展到两个线程以上,而且其压缩/解压缩性能相对较低。
我强烈建议使用ZSTD
。该命令将是:
tar -c -I 'zstd -22 --ultra --long -T0' -f archive.tar.xz [list of files and folders]
注意事项:
- 该命令需要大量 RAM,至少 5GB。您可能想要降低压缩级别,或删除
ultra/long
选项以减少 RAM 消耗。 - 如果您没有足够的源数据(小于 1GB),则可能不会使用线程。如果您仍想对少量数据使用线程,请将压缩级别从 22 降低到 20。
答案2
您可以使用XZ_DEFAULTS
或XZ_OPT
环境变量:
XZ_默认值建议用作系统范围的配置,通常在 shell 初始化脚本中设置。
XZ_OPT用于xz
在脚本或工具(例如 GNU )运行时传递选项tar
。看man xz
。
示例:使用多线程 ( -T0
) 和最大压缩级别 ( -9
):
XZ_OPT='-T0 -9' tar -cJf resultfile.tar.xz files_to_compress
答案3
对于较旧的 tar,这有效:
焦油 -cf - 文件和文件夹列表| xz -9 -T0 >|存档.tar.T.xz