3

我可以将一个大的 tar.bz2 文件拆分为几个较小的文件,然后在 Ubuntu 中单独提取这些小的 tar.bz2 文件吗?

谢谢,

4

4 回答 4

4

我认为这不容易。A.tar.bz2是单个流,它没有这样的索引zip,可以跳到存档中特定文件的开头。您可以使用split实用程序拆分文件,然后拆分cat部分并提取它们(您可以通过 stdin 执行此操作以避免在磁盘上重新创建粘贴的文件)。第一个片段可以单独提取(其中的最后一个文件可能会损坏),但如果没有前面的片段,则无法使用更多片段。

于 2012-04-23T14:26:31.533 回答
3

您可以尝试以下--multi-volume选项:

tar -cf archive.tar --multi-volume --tape-length 1024 folder

不幸的是,它不适用于压缩档案:

tar: Cannot use multi-volume compressed archives

您可以单独压缩卷,但卷的大小可能会有很大差异。

希望它能解决您的用例。

于 2012-04-23T14:37:16.987 回答
3

不确定是否仍然需要帮助,但我找到了一种方法,至少可以让您使用 split 命令和 tar (bz2) 压缩。至于单独提取每个文件,此选项将文件视为整体的一部分(就像 Winzip 在跨越多个卷时所做的那样......如果其中一个卷丢失,则整个存档已损坏)。照这样说:

创建拆分文件。请注意,这将按顺序创建带有“aa、ab、ac”名称的文件:

tar -cv(z/j)f - (要归档的文件) | split -b(以字节为单位的大小,例如 4000m)-(输出存档文件的名称)

提取拆分文件:

猫(文件*)| bzcat/gunzip(-d) | 焦油 (t/x)v(j/z)f -

(如果你使用“j”选项,bzcat 会进入管道)或者(如果你使用“z”选项,gunzip 会进入管道)。如果出现错误,您可能还需要在这两个管道中使用“gunzip -d”

于 2014-05-06T19:20:51.020 回答
0

将文件拆分为多个文件。

它将自动创建大小为 1.1GB 的文件,如果您的 tar 大小更大,您可以增加数量,例如 1000 {2..1000} 或者您可以增加磁带长度参数的输入。

tar --tape-length=1048576 -cMv --file=tar_archive.{tar,tar-{2..100}} backup.tar.lzma

但正如@michal 所说,不可能单独提取它们。

tar: backup.tar.lzma: Cannot extract -- file is continued from another volume
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
于 2019-06-17T22:38:27.613 回答