如何在最短的时间内阅读1TB压缩文件

时间:2016-06-20 06:11:29

标签: bash grep tar zcat

我正在尝试阅读压缩文件。我正在使用命令tar tf abc.tar.xz执行此操作。因为文件的大小是1TB所以需要花费很多时间。我对bash脚本不太熟悉。我还有其他命令,例如zcat 3532642.tar.gz | moretar tf 3532642.tar.xz |grep --regex="folder1/folder2/folder3/folder4/"以及

tar tvf 3532642.tar.xz --to-command \
'grep --label="$TAR_FILENAME" -H folder1/folder2/folder3/folder4/ ; true'

但是我发现他们在执行文件读取内容的时间方面没有太大的区别。

有没有人知道如何在最短的时间内处理压缩文件的大量数据。任何帮助将不胜感激!!!

1 个答案:

答案 0 :(得分:1)

正如rrauenza提到的那样,由于pigz可能不适用于xz格式,因此对于并行的索引xz压缩/解压缩,有一个类似的工具pixz

来自man page

显然Pigz压缩/解压缩使用线程来使用多个处理器和核心。

pigz类似,此命令还提供了一个选项,用于指定可在多个内核中并行调用的线程数,以实现最佳性能。

-p --processes n
Allow up to n processes (default is the number of online processors)

或者您可以从bash命令getconf _NPROCESSORS_ONLN手动获取核心数,并将值设置为-p

来自pixzGitHub页面的更多详细信息以及有关如何下载和安装的详细信息

(或)

只使用tar解决方案,只有先前已知文件名

才能执行此操作
tar -zxOf <file-name_inside-tar> <file-containing-tar>

选项如下: -

   -f, --file=ARCHIVE
          use archive file or device ARCHIV

   -z, --gzip
          filter the archive through gzip

   -x, --extract, --get
          extract files from an archive

   -O, --to-stdout
          extract files to standard output

可能不如pigz有效,但仍然可以胜任。