2012-04-23 19 views
0

我可以将大型tar.bz2文件拆分为几个较小的文件并在Ubuntu中分别提取这些小型tar.bz2文件吗?拆分tar.bz2文件并分别提取每个文件

谢谢,

+0

您想创建一组独立的.tar.bz2文件,每个文件都可以与其他文件分开提取?这比仅仅对整个存档进行拆分要简单得多,而且更像是一个超级用户类型的问题,而不是一个堆栈溢出。 – Petesh 2012-04-23 14:22:55

回答

1

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

2

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

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

不幸的是,它不压缩的档案工作:

tar: Cannot use multi-volume compressed archives 

你可以单独压缩卷,但卷的大小可能有很大的不同。

希望它能解决您的使用案例。

1

不知道是否仍然需要帮助,但我发现一种方法至少可以让您使用split命令以及tar(bz2)压缩。就单独提取每个文件而言,该选项将文件视为整体的一部分(就像Winzip在跨多个卷时所做的一样...如果其中一个卷缺失,整个归档文件已损坏)。这样说:

创建拆分文件。请注意,这将以“aa,ab,ac”指定顺序创建文件:

tar -cv(z/j)f - (要归档的文件)拆分-b(字节大小,如4000米) - (名称输出存档文件)

提取分割文件:

猫(FILE *)| bzcat/gunzip(-d)| tar(t/x)v(j/z)f -

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