Я думаю, что Барт сталкивается с вашей самой большой проблемой. Если эта двоичная последовательность повторяется во время процесса, вы получите частичные JPEG.
Я провел быструю проверку, объединив несколько JPEG-файлов, а затем распаковав их с помощью awk (обратите внимание, что магическое число в моих файлах заканчивалось 0xE0, а не 0xE1):
# for i in *.jpg ; do cat $i ; done > test.mpo
# awk 'BEGIN {RS="\xFF\xD8\xFF\xE0"; FILENUM=-1} {FILENUM++; if (FILENUM == 0) {next}; FILENAME="image0"FILENUM".jpg"; printf "%s",RS$0 > FILENAME;}' test.mpo
# file image0*.jpg
image01.jpg: JPEG image data, JFIF standard 1.01
image010.jpg: JPEG image data, JFIF standard 1.01
image011.jpg: JPEG image data, JFIF standard 1.01
Мне показалось, что это нормально, но вышеупомянутые проблемы все еще не решены и вполне реальны.