В bdiff(1)
Solaris есть команда, позволяющая создавать diff(1)
файлы, размер которых превышает размер вашей оперативной памяти ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
Есть ли что-то подобное в Linux? Я попробовал поискать в Google, но я не могу найти, какой пакет есть bdiff
в Ubuntu.
Ответы:
Похоже, что bdiff доступен в Linux (по крайней мере, как часть инструмента семейной реликвии ).
разница
Я бы, вероятно, просто использовал обычный старый diff с этим переключателем:
Почему это не работает?
Смотрите комментарий @EvanTeitelman,
--speed-large-files
это не влияет на то, как файлы загружаются в память.Может быть продемонстрировано / подтверждено не работать с помощью следующей команды:
bsdiff
Трудно подтвердить это , но я нашел инструмент под названием ,
bsdiff
которое вытекает изbdiff
. Я подтвердил, что этот инструмент в Ubuntu, простоapt-get install bsdiff
.Почему это может работать?
Еще раз спасибо @EvanTeitelman в комментариях,
bsdiff
выше это инструмент сравнения для двоичных файлов.bsdiff
является бинарным инструментом сравнения и может работать с большими файлами Неясно, насколько большой. Смотрите следующие ссылки на ветку, в которой обсуждается ее использование.RDIFF
Я думаю, что вы также можете использовать rdiff, чтобы сделать это. Rdiff умеет работать с очень большими файлами.
Создайте подпись одного файла:
Используйте созданный файл подписи sigs.txt и другой большой файл B для создания дельты:
Delta содержит всю информацию, необходимую для воссоздания файла B, когда у вас есть только A, и дельта-файл deltaAB.txt.
Чтобы воссоздать B, запустите:
Почему это работает?
Я нашел это сообщение в блоге под названием: «Лучшая разница или что делать, когда в GNU diff не хватает памяти» («разница: память исчерпана») , в которой сообщается, что файл формата 4,5 ГБ занимал только ~ 66 МБ ОЗУ.
lfhex
lfhex - это приложение для просмотра и редактирования файлов в шестнадцатеричном, восьмеричном, двоичном или текстовом формате. Основным преимуществом lfhex является его способность работать с файлами, намного превышающими системную память. Однако это инструмент с графическим интерфейсом.
Скриншот
Ссылки
источник
-H
как синоним--speed-large-files
.bsdiff
это бинарный инструмент сравнения, а не инструмент сравнения больших файлов.--speed-large-files
флаг не влияет на способ, которым GNU diff загружает файлы в память. Попробуйте запустить,fallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
чтобы подтвердить это. (Или взгляните на исходный код.)bdiff
из семейной реликвии Toolchest после замены/sbin/sh
на/bin/sh
в Makefiles. Теперь, когда я пытаюсь выполнить это на месте, я получаюbdiff: Can not execute '/usr/5bin/diff'
. Извините, я не хочу ничего устанавливать на/usr/5bin/
. Это не жизнеспособное решение. Другие варианты, упомянутые здесь, не работают для меня, потому что я хочу увидеть различия в тексте.lfhex -c file1 file2
но у меня хорошо работает после настройки View -> Editing base -> ASCII для обеих панелей.