Добавление большого файла к большому файлу затруднено, так как для этого требуется протолкнуть вперед все остальные символы. Однако можно ли это сделать, манипулируя inode следующим образом?:
Выделите новый блок на диске и заполните его начальными данными.
Настройте индексный дескриптор, чтобы сообщить ему, что ваш новый блок теперь является первым блоком, и переместите прежний первый блок на позицию второго блока, прежний второй блок на третью позицию и так далее.
Я понимаю, что это по-прежнему требует перетаскивания блоков вперед, но это должно быть более эффективно, чем использование временного файла.
Я также понимаю, что новый первый блок будет «коротким» блоком (не все данные в блоке являются частью файла), поскольку ваши данные в начале вряд ли будут точно такого же размера, как блок.
Или, если блоки inode просто связаны, для выполнения вышеописанного потребуется совсем немного усилий.
ПРИМЕЧАНИЕ: мой последний опыт прямого манипулирования данными на диске был с Commodore 1541, поэтому мои знания могут быть немного устаревшими...