如何将大型 tar.gz 文件拆分为最大 1 GB 的较小 tar.gz 文件?

问题描述 投票:0回答:1

我有一个文件

archive.tar.gz
,大小为 38 GB。我想将其存储在最大 1 GB 的块中。

为此,我想将其拆分为子文件

archive_0.tar.gz
archive_1.tar.gz
,...以便每个子文件都可以单独读取(而不仅仅是在第1024个字节处剪切的原始文件) .

换句话说,每个

archive_x.tar.gz
文件都应该是有效的
tar.gz
文件。

我该怎么做?最好使用 shell 脚本或 python。

谢谢!

python bash split tar archive
1个回答
0
投票

假设您有足够的磁盘空间,运行Linux,并且可以拥有root权限:

  1. 列出原始 tar 存档中的文件,包括大小和大小

    tar tzvf archive.tar.gz > /tmp/archive-full-list
    tar tzf archive.tar.gz > /tmp/archive-list
    
  2. 编写您的 GNU awk 或 Python 脚本(或使用 libtar 的 C 程序)来解析这些存档列表,检查没有单个文件具有 1Gb(未压缩)数据。也许使用一些 SQLiteRedisPostGreSQL 数据库来存储元数据、名称(即文件路径)、权限、所有者和每个文件的大小。

  3. 编写另一个脚本,将数据分块为单千兆字节未压缩块,并适当收集文件路径

  4. 运行适当的 tar 命令来创建

    archive_x.tar.gz

© www.soinside.com 2019 - 2024. All rights reserved.