Я хочу сделать контрольные суммы больших файлов и потоков в Unix / Linux, и я хочу получить много контрольных сумм из каждой большой части файла / потока, каждые 1 МБ или каждые 10 МБ.
Например, у меня есть образ диска, сжатый образ диска и копия исходного диска. Некоторые части изображений могут быть изменены. Диск составляет 50 ГБ, и есть около 50000 блоков по 1 МБ. Поэтому для каждого файла я хочу получить 50 000 md5sum или sha1sums, чтобы получить обзор изменений. Одиночная md5sum не поможет мне найти смещение модификации.
Эта задача проста для несжатого образа диска, с помощью инструмента dd
для цикла for
bash со смещением вычислений и выбора (пропуска) каждой части файла размером 1 МБ. То же самое с диском:
for a in `seq 1 50000`; do echo -n "$a: "; dd if=image.src bs=1M count=1 skip=$a | md5sum; done
Но теперь я хочу сравнить сжатый образ и несжатый, не распаковывая его на диск. У меня есть распаковщик 7z
который может распаковать образ на стандартный вывод с высокой скоростью, до 150-200 МБ / с (опции 7z e -so image.7z |
). Но что я могу написать после |
символ для получения md5sum всех частей файла.