![哪种档案格式在提取单个文件时不会读取/提取整个档案?](https://linux22.com/image/837565/%E5%93%AA%E7%A7%8D%E6%A1%A3%E6%A1%88%E6%A0%BC%E5%BC%8F%E5%9C%A8%E6%8F%90%E5%8F%96%E5%8D%95%E4%B8%AA%E6%96%87%E4%BB%B6%E6%97%B6%E4%B8%8D%E4%BC%9A%E8%AF%BB%E5%8F%96%2F%E6%8F%90%E5%8F%96%E6%95%B4%E4%B8%AA%E6%A1%A3%E6%A1%88%EF%BC%9F.png)
正如标题所述,我有几个大型档案(目前为 .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)