Здається, bdiff доступний в Linux (принаймні, як частина інструментального інструменту Heirloom Toolchest ).
розл
Я, мабуть, просто використовую звичайний старий diff з цим комутатором:
diff --speed-large-files bigfileA bigfileB
Чому це не працює?
Дивіться коментар @EvanTeitelman, --speed-large-files
не впливає на завантаження файлів у пам'ять.
Можна продемонструвати / підтвердити, що не працює, використовуючи таку команду:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
bsdiff
Важко це підтвердити, але я знайшов інструмент, bsdiff
який називається bdiff
. Я підтвердив, що цей інструмент є в Ubuntu, просто apt-get install bsdiff
.
Чому це може спрацювати?
Ще раз дякую @EvanTeitelman в коментарях, bsdiff
вищесказане є різним інструментом для бінарних файлів. bsdiff
є двійковим різницевим інструментом і може працювати з великими файлами. Незрозуміло, наскільки великі. Дивіться наступні посилання на тему, в якій обговорюється його використання.
rdiff
Я думаю, ви також можете використовувати rdiff для цього. Rdiff здатний працювати з дуже великими файлами.
Створіть підпис одного файлу:
rdiff signature A sigs.txt
Використовуйте створений файл підпису sigs.txt та інший великий файл B для створення дельти:
rdiff delta sigs.txt B deltaAB.txt
Delta містить всю інформацію, необхідну для відтворення файлу B, якщо у вас є лише A і файл delta deltaAB.txt.
Щоб відтворити B, запустіть:
rdiff patch A deltaAB.txt B
Чому це працює?
Я виявив цю публікацію в блозі під назвою: Кращий розряд чи що робити, коли GNU розряджається з пам'яті ("diff: пам'ять вичерпано") , в якій повідомляється, що rdiff файлів 4,5 ГБ споживає лише ~ 66 Мб оперативної пам'яті.
lfhex
lfhex - це програма для перегляду та редагування файлів у шістнадцятковому, восьмеричному, бінарному чи текстовому форматі. Основна сила lfhex - це вміння працювати з файлами, значно більшими за системну пам'ять. Однак це графічний інструмент.
скріншот
Список літератури