哪种档案格式在提取单个文件时不会读取/提取整个档案?

哪种档案格式在提取单个文件时不会读取/提取整个档案?

正如标题所述,我有几个大型档案(目前为 .7z 和 .tar.gz 格式)存储在远程位置,我通过 sshfs 访问这些档案。我经常发现自己需要从这些档案中提取一两个文件,而 ubuntu 中的默认档案管理器似乎会先在后台提取/读取整个文件,然后我才能获得所需的文件。

我想要一份不发生这种情况的可能格式的列表。换句话说,我希望能够毫不延迟地从大型档案中提取文件。

答案1

zip、7zip 和 dar(非固态模式)具有此属性。它们通过存储目录并压缩成较小的块来实现此目的,因此只需要解压包含要提取的文件的块。不过,这确实会导致压缩率略低。

答案2

我不知道有什么可以满足您的所有要求。不过,我可能有一些东西仍然可以使用

如果您的需求主要是读取,请考虑创建 SquashFS 映像,而不是创建压缩存档(例如 tar.gz)。SquashFS 是一个只读压缩文件系统。然后,您将能够通过 sshfs 访问该映像文件并挂载作为环回设备。

由于这是一个完整的文件系统,目录遍历、数据访问等将仅限于所需的特定块。

答案3

这已成为每个 UNIX 和类 Unix 平台的规则。因为 UNIX 的理念是应用程序必须尝试完美地完成单个任务。因此,没有一款应用程序能够将归档和压缩结合在一起。

优点是,您可以将一个归档应用程序与任何压缩应用程序组合使用。例如,将 tar 与 gzip 组合使用 (tar.gz) 以及将 tar 与 lzma 组合使用 (tar.lz)。

也许专有应用程序可以提供您想要的功能(例如 WinZIP),但它仅适用于其他付费 UNIX(OS X)

相关内容