我有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
或两…