具有完整属性的可浏览压缩文件系统档案?

具有完整属性的可浏览压缩文件系统档案?

也许整个问题的变体是:tar除了保留 Linux 文件权限和用户/组标志之外,还有其他归档工具吗?

我想在我的 ubuntu 机器上创建目录树的存档。目录树很大,第一次运行就tar cvpzf archive.tgz /home/foo/bar产生了 5GB 的存档。

我还想保留所有权限和其他标志和特殊文件。

5GB 的存档我没问题,但是要查看该存档内部 -- 因为它是压缩的 tar 存档 -- 必须先解压整个 5GB!(或者使用存档查看器打开时显示为这样 -- 我很高兴得到纠正。)

因此,我需要一种方法来“备份”目录(树),同时保留完整的文件系统属性和权利,并创建一个带有“索引”的档案,无需解压即可浏览其内容。


编辑:指定我认为的档案,之后Whalley 的回答

档案可以是单个文件,也可以是包含以下内容的(小)文件集满的完全的此文件内的信息。也就是说,它可以存在于任何文件系统中(大小允许),可以刻录到 DVD 上,您可以split这样做(之后这个问题的重点就真的消失了 - 但仍然如此),...

答案1

您是否知道 tar 的 t 函数可以打印出存档的内容?您可以在 gzip 压缩存档上使用它,如下所示:

tar ztvf archive.tgz

它会以长列表格式打印出文件,包括时间戳和大小。事实证明,如果您在创建存档时使用两个 v 选项,它会在将文件添加到存档时列出长列表(而不是仅仅列出它们),因此您可以执行类似这样的操作,在一次备份时自动创建索引:

tar cvvpzf archive.tgz /home/foo/bar > archive.tgz.index

请注意两个 v 选项的使用。许多其他命令允许您通过这种方式增加详细程度(例如 ssh)。

答案2

我多次遇到过这个问题。以下是我找到的解决办法。

压缩
.zip如果使用大多数 Linux 系统上安装的 zip 实用程序创建,则文件支持 unix 权限和符号链接。但是,它不支持全部支持的扩展tar,例如硬链接和扩展属性。但是您可以从 ZIP 存档中提取文件,而无需先解压整个存档,所以这是一个胜利。

壁球
如果你正在寻找一个可挂载的压缩只读文件系统,那么目前的最佳选择是壁球。但是有一个问题……好吧,实际上有几个问题。具体来说:

  • SquashFS 相对较新,并且不像 之类的工具那样受到广泛支持tar
  • 目前有两种磁盘格式,由两种不同版本的工具生成,彼此不兼容。请确保您获取正确的格式。
  • 没有 FUSE 驱动程序——您需要内核支持您的 squashfs 版本才能挂载图像。
  • 支持工具(mksquashfsunsquashfs)相当简单并且不支持您所看到的广泛的选项tar
  • 没有太多的文献资料。

答案3

主要问题似乎是

... 要查看该档案... 必须先解压整个 5GB!(或者使用档案查看器打开时显示为这样...)

确实需要解压缩,但这并不意味着需要将所有文件“解压”到文件系统中。

要提取一个或多个文件,tar将解压整个档案,但会丢弃除参数中列出的文件之外的所有内容。
类似地,使用-t( --list) 列出文件名需要解压整个档案,但会丢弃所有文件内容。

要理解为什么档案开头没有索引,请考虑一下它tar最初是为与磁带设备配合使用而设计的;因此得名tar- 像磁带档案器。在磁带上,您想在末尾添加下一个文件,但不想倒回到开头来写索引。

答案4

您可能需要研究一下 fusecompress,它“提供了一个可安装的 Linux 文件系统,可以透明地压缩其内容。存储在此文件系统中的文件会即时压缩,并且 Fuse 允许在压缩文件和用户应用程序之间创建透明接口。”

对于用户来说,存储的文件可以被访问,就像它们没有被压缩一样。

但是如果你有空间,为什么不直接复制目录树呢?更简单。

另一个选项是将目录树复制到 USB 驱动器。这样可以轻松访问,并可防止磁盘崩溃。

相关内容