如何使用多线程创建和提取 tar.xz

如何使用多线程创建和提取 tar.xz

我用

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 存档。

这是使用-Itar 的参数来完成的,它告诉tar使用什么程序来压缩 tar 存档,以及传递给它什么参数。指示使用最大压缩-9xz指示使用与 CPU 一样多的线程-T0xz


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_DEFAULTSXZ_OPT环境变量:

XZ_默认值建议用作系统范围的配置,通常在 shell 初始化脚本中设置。

XZ_OPT用于xz在脚本或工具(例如 GNU )运行时传递选项tar。看man xz

示例:使用多线程 ( -T0) 和最大压缩级别 ( -9):

XZ_OPT='-T0 -9' tar -cJf resultfile.tar.xz files_to_compress

参考在 bash 或派生 shell 上使用最新的 GNU tar,另请参阅xz 手册页

答案3

对于较旧的 tar,这有效:

焦油 -cf -  文件和文件夹列表| xz -9 -T0 >|存档.tar.T.xz

相关内容