Разделить файл на более мелкие куски. Скорее всего, вы израсходовали много места в памяти, ничего не делая, кроме сдвига битов в памяти или на диске.
Это похоже на то, как гораздо быстрее объединять / заменять массив строк, а не одну строку.
Единственная хитрость в том, чтобы убедиться, что место, где вы поместили разрыв в файл, не является хорошим совпадением, что относительно тривиально. На самом деле, если вы можете сделать это по линиям, это даже лучше, не нужно проверять совпадения.
Мне также кажется странным, что это займет недели PERL. Есть некоторые неподтвержденные данные, свидетельствующие о том, что он справится с этим менее чем за час:
На самом деле, они говорят о файлах 1 Гб, занимающих 2 минуты во второй ссылке.
И я не подозреваю, что операция замены должна занимать значительно больше времени, чем операция копирования файла, в конце концов, это просто сбор кусков файла и замена некоторых бит по мере их перемещения. Он должен иметь возможность заменить их на лету со скоростью, близкой к скорости их копирования (поскольку они уже находятся в памяти)