将大数据归档为多个部分

将大数据归档为多个部分

我正在处理大数据,需要归档一个大于 64 TB 的目录。我无法在我的文件系统上创建这么大的文件(存档)。不幸的是,所有在 Linux 上创建多部分存档的建议解决方案都建议首先创建存档,然后使用split命令将其分割成更小的文件。

我知道 fe 7zip 是可能的,但不幸的是我被迫使用 RedHat 6 中内置的工具 - tar、gzip、bzip2...

我想知道如何创建一个脚本来询问用户最大卷大小。它会使用 gzip 归档每个文件,拆分那些太大的文件,然后手动将它们合并到具有所选大小的许多 tar 文件中。这是一个好主意吗?

还有其他方法可以使用基本的 Linux 命令来实现大档案划分吗?

更新:

我已经在具有最大文件大小限制的文件系统上测试了该解决方案,并且它有效。将tar输出直接重定向到命令的管道split已按预期工作:

tar -czf - HugeDirectory | split --bytes=100GB - MyArchive.tgz.

创建的文件已经很小,将它们合并在一起时不会创建超大文件:

cat MyArchive.tgz* | tar -xzf -

答案1

如果你有足够的空间来存储压缩档案,那么可以一次性创建和分割档案(假设是 GNU split):

tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G

这将创建名为 等的文件xaa.gz.partxab.gz.part每个文件都是存档的 1G 压缩位tar

要提取存档:

cat x*.gz.part | tar -x -vz -f -

如果文件系统无法存储压缩存档,则需要将存档部分写入另一个文件系统,以替代某些远程位置。

在该远程位置,例如:

ssh user@serverwithfiles tar -c -vz -f - directory | split --additional-suffix=.gz.part -b 1G

这会将压缩存档ssh从具有大目录的计算机传输到本地计算机并将其拆分。

答案2

对于基本的 UNIX 命令,除了分割现有文件之外,我没有其他办法。

但是安装star和使用 的多卷功能怎么样star

这样做的优点是可以检查零件是否按正确的顺序提供。

相关内容