![最“有效”的存档转换](https://linux22.com/image/17133/%E6%9C%80%E2%80%9C%E6%9C%89%E6%95%88%E2%80%9D%E7%9A%84%E5%AD%98%E6%A1%A3%E8%BD%AC%E6%8D%A2.png)
如果您像我一样,您会拥有大量不同格式的档案(zip、tar、rar、tgz、tar.bz2 等)。在清理我的东西时,我决定基本上不理会我的档案(通常通过 archivemount 或 avfs 访问内容)。顺便说一句,在大多数情况下,我不会写入这些档案,但有时我或应用程序可能会将配置文件/索引文件/描述文件/杂散文件...写入这些档案。
但是,我希望有一种首选格式,可以在清理存档时将这些存档转换为该格式。这种存档格式的一些因素是明确的:应该很容易将其他格式转换为这种格式,最好是直接转换;访问存档中的文件不应该有显着的开销,大小是考虑因素,但不是主要因素,只要存档在提取时不是相同文件的两倍即可。
现在,我并没有天真地期望人们回答“最好的存档格式是......”,而是我希望了解您在这种情况下可能使用的各种存档格式的优缺点。
答案1
在 Unix 世界中tar
是事实上的归档格式。当然还有其他既可以读取又可以写入的格式,但这tar
是任何时候您想要捆绑文件时的首选格式。
您真正的问题似乎是使用什么压缩系统。压缩始终是速度和压缩比之间的权衡。速度受到影响的地方也可能有所不同,有些解压效率高,但压缩时间较长,有些则相反。
您应该使用最适合您的方法。完全不压缩意味着可以轻松访问和更新您的存档。这还意味着版本控制和备份系统rsync
能够更深入地查看数据并进行更有效的增量备份。另一方面,大量压缩可以减小尺寸。gzip
和等格式bzip2
是最常用的无损压缩格式,但lzma
也7z
存在其他一些格式。其中许多工具还包括使用相同算法的不同压缩比的选项。
答案2
这取决于。
如果您不需要存储权限,请选择 7z。它提供对单个文件的快速访问(是否尝试过从 100 GB tar 中提取一个文件?)和良好的压缩。我曾经用 find 和 sed 编写了一个权限恢复脚本生成器脚本,如果您有兴趣,我会尝试找到它。
对于小型(最多几 GB)档案,我会使用压缩 tar。如果速度很重要,我不会将其用于更大的档案。 xz 比 bzip2 好,而 bzip2 又比 gzip 好。一些 live/rescue CD 没有 xz,但我还没有看到没有 bzip2 的系统。
对于较大的文件,未压缩的 tar 是一个不错的选择。大多数时候速度是可以接受的。根据档案中的内容,压缩它可能没有意义。音频和视频文件已经被压缩,无法使用无损算法进一步压缩。
Star 可以完成 tar 可以做的所有事情,并且具有稀疏文件支持。不幸的是它没有被广泛使用。
答案3
我会选择zip
,因为它可以有效地访问存档中的任何文件,同时具有可接受的压缩率;使用 时.tar.*z
,必须首先解压缩存档,然后从中读取(并不是说这tar
本身就不好,但如果您一次压缩/解压缩所有内容,效果最好)。