拆分tar.bz2文件并单独提取每个文件

时间:2012-04-23 14:14:45

标签: linux ubuntu tar

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

谢谢,

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

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

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

tar: Cannot use multi-volume compressed archives

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

希望它能解决您的用例。

答案 2 :(得分:2)

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

创建拆分文件。请注意,这将使用" aa,ab,ac"顺序创建文件。名称:

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

提取拆分文件:

cat(文件*)| bzcat / gunzip(-d)| tar(t / x)v(j / z)f -

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

答案 3 :(得分:0)

要将文件拆分为多个文件。

它将自动创建大小为1.1GB的文件,如果tar较大,则可以增加数量,例如1000 {2..1000},或者可以增加对tape-length参数的输入。

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