我有一个 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
作为输出文件。append
delete
由于您的 tar 存档相当大,您可能不想多次解压缩它以逐部分提取文件,同时为每组提取的文件创建单独的存档。
有一个python tar 库这可能允许“飞行中”tar 文件处理(我自己不太擅长python
验证这一点)。因此,您可以开发一个 python 脚本,从源存档中读取项目,然后将它们附加到当前输出存档,直到其大小达到您选择的限制。然后,脚本将创建下一个输出存档并进一步继续。