将 50GB 的二进制文件分割成 5GB 或更小的块,然后再重新组装,最快和最可靠的方法是什么?

将 50GB 的二进制文件分割成 5GB 或更小的块,然后再重新组装,最快和最可靠的方法是什么?

我们的服务器运行的是 Ubuntu Linux,二进制文件是大型 MongoDB 集合的 BSON 转储。像这样的工具有多可靠split?有没有更快或更好的方法来做到这一点?

答案1

split非常可靠。我们用它来移植大型日志文件,对于几 GB 的文件(无论如何不是 50 GB),它运行良好。

我相信您可以尝试使用分割来满足您的要求,然后告知我们。

分割成 5GB 的文件

split --bytes=5G inputfile

它会分割成多个5GB的文件,并将其命名为xaa,xab,xac,....等等。

连接

cat x* > outfile

通过这样,您可以在另一端将其连接为单个文件。

答案2

分开,拆分-b

若要加入,只需cat

据我所知,它们是完全可靠的,并且我怀疑还有更有效的东西。

答案3

split&cat完全可靠。您还可以像这样在线压缩。假设您的输入文件是dump.bson

gzip < dump.bson | split -b 32M - dump.bson.gz.

然后以此方式重构:

cat dump.bson.gz.* | gunzip > dump.bson

提示,这同样适用于xz(dec)代替g(un)zip

答案4

从你的问题中我们可以假设,在分裂阶段和重组阶段之间可能存在一个传输阶段——在这种情况下,涉及压缩的过程可能会非常有益。

标准 GNUtar具有-M创建多卷档案的选项以及-L定义段长度的选项。结合其中一个压缩选项(例如-z,,j...),您可以创建一个工具链,

  • 据我所知,每个 Linux 发行版都有
  • 提供拆分、重组、压缩和解压缩
  • 还有一个好处,就是能够将多个文件打包到单个存档序列中(例如 MongoDB 数据文件夹原样)

相关内容