将 tar 或 tar.gz 文件重新打包为较小的 tar/tar.gz 文件

将 tar 或 tar.gz 文件重新打包为较小的 tar/tar.gz 文件

我有一个 tar.gz 文件,其中包含几百万个文件。由于文件数量的上限,我想在不解压缩的情况下分割内容。有没有办法让我将一个 tar/tar.gz 文件分成多个 tar/tar.gz。

如果不可能的话,可以用python代替吗?

第一篇文章让我知道我是否做错了什么。

编辑:我不想把它重新组合起来。我希望能够处理每个“分割”文件。

答案1

split 是正确的工具。

将文件分割成 10MB 的块

split -b10m /path/to/file parts

把它放在一起

cat parts* > file

答案2

您可以使用 来分割它split,但是各个部分在重新组合在一起之前没有任何意义。如果您想将其拆分为独立的档案,则需要将其解压缩。

答案3

不解压就不可能将压缩tar档案分割成多个片段:压缩应用于“tar 流”之上,并且该流被压缩器视为不透明的二进制流。

因此,任何可以从原始压缩 tar 存档生成一组 tar 文件的工具实际上都会对其进行解压缩。

除了和模式之外,它tar本身没有任何模式可以将 atar archive作为输入并生成另一个tar作为输出文件。appenddelete

由于您的 tar 存档相当大,您可能不想多次解压缩它以逐部分提取文件,同时为每组提取的文件创建单独的存档。

有一个python tar 库这可能允许“飞行中”tar 文件处理(我自己不太擅长python验证这一点)。因此,您可以开发一个 python 脚本,从源存档中读取项目,然后将它们附加到当前输出存档,直到其大小达到您选择的限制。然后,脚本将创建下一个输出存档并进一步继续。

相关内容