Если кто-то вставляет или удаляет в начале файла, то большую часть файла все равно придется переписывать.
Таким образом, ваша стратегия должна заключаться в том, чтобы сделать автосохранение простым. Для этого вы, вероятно, захотите записать вывод в файл резервной копии в потоке, и только тогда, когда эта резервная копия записана безопасно, переместите ее поверх предыдущей резервной копии. Ясно, что вы можете начать запись следующей резервной копии только после завершения первой, поэтому вы не можете записывать каждое изменение таким образом.
Другая стратегия заключается в том, чтобы записать журнал изменений, и они могут быть повторно записаны. применяется, когда пользователь выбирает восстановление. Время от времени вы можете написать новую полную резервную копию, а затем сбросить журнал. Вероятно, в этом журнале будут те же данные, что и для отмены / повтора.