Дано, файл контейнер 20ГБ, нужно разбить его на N файлов разной длинны, где длинна выходных файлов указывается в диапазоне например от 100М до 500M и послений отрезок, если он не подпал под условие 100500 пишется как есть. Затем, зная последовательность разбивки, нужно это всё склеить так чтобы контрольные суммы до и после сошлись.
Думаю можно сделать dd, но как заставить dd писать каждый новый файл с места где была прервана запись предыдущего?
Правда dd не хотелосьбы т.к. любит он ОЗУ, во всяком случае при чтении из urandom.
UDP1: ключ skip у dd позволяет пропускать заданое количество блоков, выходит можно размер в байтах основного файла побить на куски, требуемым алгоритмом и потом складывая размер уже скопированных частей нарезать следующие.
UPD2: ключ conv=notrunc у dd позволяет дописывать из if в of.