我可以将一个大的 tar.bz2 文件拆分为几个较小的文件,然后在 Ubuntu 中单独提取这些小的 tar.bz2 文件吗?
谢谢,
我认为这不容易。A.tar.bz2
是单个流,它没有这样的索引zip
,可以跳到存档中特定文件的开头。您可以使用split
实用程序拆分文件,然后拆分cat
部分并提取它们(您可以通过 stdin 执行此操作以避免在磁盘上重新创建粘贴的文件)。第一个片段可以单独提取(其中的最后一个文件可能会损坏),但如果没有前面的片段,则无法使用更多片段。
您可以尝试以下--multi-volume
选项:
tar -cf archive.tar --multi-volume --tape-length 1024 folder
不幸的是,它不适用于压缩档案:
tar: Cannot use multi-volume compressed archives
您可以单独压缩卷,但卷的大小可能会有很大差异。
希望它能解决您的用例。
不确定是否仍然需要帮助,但我找到了一种方法,至少可以让您使用 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”
将文件拆分为多个文件。
它将自动创建大小为 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