大量文件最快的压缩方法是什么?


14

我需要压缩一个包含约350,000个相当小的文件的目录,总计约100GB。我正在使用OSX,当前正在使用标准的“压缩”工具,它将此目录转换为.zip文件。有更快的方法吗?


您可能无法击败tar,因为它实际上并未压缩,只能压缩,而没有启用该压缩的特定选项。在回答中,我很乐意看到证据,没有意见……
丹尼尔·贝克

1
取决于您要压缩多少。
ta.speot.11年

1
我最终使用了tar,并且出于速度原因,还没有尝试对其进行压缩。它能够及时完成我需要的功能。谢谢!
秒杀

@ DanielBeck,tar的问题是它们没有显示目录树。因此,即使要获得“视图”,我们也需要解压缩整个tar。是否可以使用tar显示目录视图的替代方法?
Pacerier

Answers:


15

对于目录,我将使用max-compression tar传递给bzip2

一个简单的方法是

tar cfj archive.tar.bz2待存档目录/ 

如果您不打算从存档中获取少量文件
,而只是打算在需要时/在任何地方提取整个文件,这将非常有用。
但是,如果您确实想取出一小部分文件,则还算不错。

我更喜欢调用此类档案,filename.tar.bz2并使用' xfj'选项进行提取。

最大压缩管道如下所示:

tar cf-要存档的目录/ | bzip2 -9-> archive.tar.bz2  
#^从此处将压缩包压缩到存档文件中。 

注意:“ bzip2”方法和更多的压缩往往比gziptar cfz”的常规方法慢。

如果您的网络速度很快,而归档文件将放置在另一台计算机上,则
可以加快网络中的管道传输速度(有效地将两台计算机一起使用)。

tar cf-dir / | ssh user @ server“ bzip2 -9-> /target-path/archive.tar.bz2”  
#^通过网络将tarball压缩到^并在远程计算机上存档。

一些参考,

  1. Linux Journal:压缩工具比较,2005年7月28日
  2. gzip vs. bzip2,2003年8月26日
  3. 快速基准测试:Gzip,Bzip2和LZMA,2005年5月31日

2
发问者要求使用最快的方法,将100Gb的tar解压缩将需要一生!磁盘空间是如此的便宜,以至于千载难逢地挤出了冗余的每一个可能点,只是对资源的无谓浪费,除非绝对必要。由于大多数磁盘使用情况都是在闲置空间中占用的,因此用-1将tar gzip压缩可能会很好地完成工作,并允许在几个月前进行下一个任务!
安迪·李·罗宾逊

虽然我同意100GB的文件可能不值得整体压缩,但我认为bzip2 100GB的时间不会比1GB的线性增加。很乐意看到一些理论或数据来说明这两种方式。
尼克,

我了解bzip2的字典是自适应的,因此它一直在其搜索窗口中一直寻找新的冗余,直到文件末尾。取决于文件熵的同质性,它应该是相对线性的。假设它从文件开始就拥有了所有必需的内容,以便能够快速压缩其余部分,这将是一个糟糕的压缩程序,但是在某些情况下,尽管有比工作更老的更好的方法,但这可能是所有需要的压缩程序。凭经验得出100GB数据集!
安迪·李·罗宾逊

7

这个家伙对此做了一些研究。.zip似乎可以更快地压缩较大的文件。但是,它产生最大的压缩大小之一。看起来他在使用Windows实用程序,但是我敢打赌OSX的实用程序几乎是经过优化的。

是一个出色的网站,其中众多压缩实用程序已针对许多文件的速度进行了基准测试。您可以在该站点上进行许多其他测试,以确定最适合您的实用程序。

大多数速度与您使用的程序有关。我已经在Windows上使用了7zip的实用程序,并且发现它非常快。但是,无论如何压缩许多文件都需要花费很长时间,因此我只需要一夜之间就可以完成。或者您可以只压缩整个文件,而不压缩它。。。我个人不喜欢解压缩大型档案,因此如果要这样做,我会非常小心。


0

我更喜欢使用

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

用于将文件移动到其他服务器并同时覆盖它们


1
@nik的最佳答案已经建议了这一点。如果您有实质性的内容,但不想给出一个涉及的答案,则无需重复强调,只需对另一个答案进行投票或添加评论。; o)
pbhj18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.