Linux上快速多部分文件合并



我有6,369个文件,每个256 MB(总共1.63 TB),存储在配备了4 TB RAM的Linux服务器上的RAM磁盘卷中。我需要将它们合并为存储在同一RAM磁盘中的单个文件。什么样的归并操作能给我最好的性能?如果需要更多的内存,我可以将原始部件存储在1.9 TB的NVMe驱动器上。

指出:

  • 文件已被压缩
  • 我们对可用RAM或NVMe没有任何限制

假设这些文件以某种方式排序(例如连续编号或格式化日期),cat应该从shell提示符中执行此操作:

cat single*.dat > combined.dat

您可能想要确保在您的特定shell中排序没有问题:https://unix.stackexchange.com/questions/368318/does-the-bash-star-wildcard-always-produce-an-ascending-sorted-list

除此之外,当使用命令行(而不是脚本)时,输入文件的数量应该不相关,但您仍然应该事先检查您的设置:https://unix.stackexchange.com/questions/356386/is-there-a-maximum-to-bash-file-name-expansion-globbing-and-if-so-what-is-it

听起来你没有内存有限的问题,所以你应该按照Lecraminos的建议去做。

如果存在空间有限的问题,您可以使用

压缩(希望是临时的)目标。
cat single*.dat | gzip > combined.dat.gz

或者可能遍历每个文件并在使用后从(希望是临时的)存储中删除每个文件:

for file in single*.dat; do
cat "$file"
rm -f "$file"
done > combined.dat

或两…

最新更新