如何在最短的时间内读取 1TB 压缩文件 [关闭]

Posted

技术标签:

【中文标题】如何在最短的时间内读取 1TB 压缩文件 [关闭]【英文标题】:How to read 1TB zipped file in minimum time [closed] 【发布时间】:2016-06-20 06:11:29 【问题描述】:

我正在尝试读取压缩文件。我正在使用命令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'

但在执行文件以读取其内容所需的时间方面,我发现它们之间没有太大区别。

有谁知道我怎样才能在最短的时间内为压缩文件处理如此大量的数据。任何帮助将不胜感激!!!

【问题讨论】:

你不会加快解压速度,你可以在之后加快你在流上所做的事情。请清楚地表明您对解压缩的流做了什么。 我想读取压缩文件的内容而不实际解压缩它,并希望对 1TB 文件执行此操作。你能告诉我如何在最短的时间内完成吗? 解压不会有时差,最容易使用的是zcat 您可以尝试pigz 进行解压缩(它是多线程的),但我怀疑如果您观看top,您的tar 命令将处于100% cpu 并且将成为瓶颈. 我不会承诺“最佳”,但它可能比 zcat 更快——等等,你的文件是 xz 而不是 gzpigz 不起作用。见askubuntu.com/questions/258202/multi-core-compression-tools 【参考方案1】:

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

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 有效,但仍能胜任。

【讨论】:

但正如 rrauenza 所说,它不能用于 .xz 扩展名。您能针对这种情况提出任何建议吗? @MKB:你能用tar试试替代解决方案吗,如果它也不起作用,我会删除答案 这项工作已经使用tar 完成,但问题是我在问题描述中提到的执行时间。 @Inian 只需将您的答案调整为来自此处的xz 兼容工具:askubuntu.com/questions/258202/multi-core-compression-tools @Inian 你可能想推荐foo | tar 方法?

以上是关于如何在最短的时间内读取 1TB 压缩文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在最短的时间内搞定数据结构和算法,应付大厂面试?

最短的java代码[关闭]

SQLXML 4 - 批量插入 xml 数据

具有数千个签名的防病毒软件如何在很短的时间内扫描文件? [关闭]

PHP 使用PHP解压缩服务器上的ZIP FILE FOLDER - 最短的代码。

Python - 最短的编写方式/最具创意的编写方式/最快的代码处理[关闭]