Попробуйте
bzdiff или лучше по эффективнее по памяти
vbindiff (или обычный diff для текстовых)
upd. оригинальная утилита сильно потребляет оперативную память, нужно искать версии не такие требовательные
Можно хранить первоначальную версию и потом серию последовательных патчей, недостаток - для восстановления последней версии потребуется последовательное принятие всех патчей, очень длительная операция (фактически при каждом применения патча копируется весь файл)
Когда то давно я на основе этого делал резервное копирование, а чтобы не пришлось через год сотни патчей применять, храню только последние N патчей, старательно подготавливая N+1 версию (применяя старый патч и сохраняя результат, удаляя старую версию)