我有一个文件
archive.tar.gz
,大小为 38 GB。我想将其存储在最大 1 GB 的块中。
为此,我想将其拆分为子文件
archive_0.tar.gz
,archive_1.tar.gz
,...以便每个子文件都可以单独读取(而不仅仅是在第1024个字节处剪切的原始文件) .
换句话说,每个
archive_x.tar.gz
文件都应该是有效的 tar.gz
文件。
我该怎么做?最好使用 shell 脚本或 python。
谢谢!
假设您有足够的磁盘空间,运行Linux,并且可以拥有root权限:
列出原始 tar 存档中的文件,包括大小和大小
tar tzvf archive.tar.gz > /tmp/archive-full-list
tar tzf archive.tar.gz > /tmp/archive-list
编写您的 GNU awk 或 Python 脚本(或使用 libtar 的 C 程序)来解析这些存档列表,检查没有单个文件具有 1Gb(未压缩)数据。也许使用一些 SQLite 或 Redis 或 PostGreSQL 数据库来存储元数据、名称(即文件路径)、权限、所有者和每个文件的大小。
编写另一个脚本,将数据分块为单千兆字节未压缩块,并适当收集文件路径
运行适当的 tar 命令来创建
archive_x.tar.gz