Я хочу найти различия между двумя текстовыми файлами (более 50 ГБ каждый).
Я попробовал diff
, но у меня возникла memory exhausted
проблема.
Я использую Windows7. Мой код на PHP. Я вызывал diff из моего php как:
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'");
Кто-то рассказал мне о том rdiff
, что он генерирует сигнатуру и дельту, но я не тестировал его, потому что не знаю, с чего начать.
Откуда я могу его установить? Откуда я могу его запустить? Из windows cmd или cygwin cmd?
решение1
Вы пробовали --speed-large-files
переключиться на diff
? Это должно тратить меньше памяти:
diff --speed-large-files [...]
Из страницы руководства для diff
:
--скорость-большие-файлы
предполагают большие файлы и множество разрозненных мелких изменений
решение2
wxHexEditor
wxHexEditor бесплатен и может сравнивать большие файлы размером до 2^64 байт (2 экзабайта). Имеет графический интерфейс. Кроссплатформенный. Множество функций.
Чтобы получить его бесплатно, выберите один из следующих вариантов:
- Вариант:SourceForge
- Вариант:GitHub
- Вариант: репозитории Debian и Ubuntu
Ниже приведено то же предложение, что и выше. Но с подробностями, если они вам интересны.
Скриншот
Сила
• Шестнадцатеричный (Hex) редактор. Полезно для обратного инжиниринга.
• Кроссплатформенность. Linux, Mac OS, Windows
• Простой в использовании графический интерфейс пользователя (GUI)
• Поддерживает очень большие файлы размером до 2^64 байт (2 Эксабайта)
• Сравнение двух больших файлов бок о бок (разн.). При желании вывести список и выполнить поиск по всем разн.
• Очень быстрый поиск
• Использовать небольшой объем оперативной памяти
• Не создавать временные файлы. Поэтому он использовал очень мало места для хранения.
• Темная или светлая тема
• Многоязычный 15 языков
• Открытый исходный код. Если вы не знакомы с "открытым исходным кодом", это означает, что это программное обеспечение имеет как более высокую безопасность, так и более высокую конфиденциальность. Поскольку его код доступен для публичного ознакомления и внесения вкладов в GitHub по адресуhttps://github.com/EUA/wxHexEditorили на SourceForge по адресуhttps://sourceforge.net/p/wxhexeditor/code/
• Привлекательная GNU General Public License версии 2. Это означает, что программный код этого расширения принадлежит и поддерживается дружественным некоммерческим сообществом. Вместо коммерческой корпорации.https://github.com/EUA/wxHexEditor/blob/master/ЛИЦЕНЗИЯ
Испытание
• Путаница между двумя репозиториями кода. На момент написания этой статьи, август 2021 года, репозиторий GitHub, похоже, был более новым. Поскольку он последний раз обновлялся в 2021 году наhttps://github.com/EUA/wxHexEditor Для сравнения, репозиторий SourceForge по адресуhttps://sourceforge.net/projects/wxhexeditor/Последнее обновление wxHexEditor было 31 декабря 2017 года.
Покажите свою поддержку
• Если вам понравилось это приложение, покажите свою поддержку авторам и участникам:
___• Пожертвование вhttps://www.paypal.com/cgi-bin/webscr?item_name=Donation+to+wxHexEditor&cmd=_donations&business=erdem.ua%40gmail.com
___• Поддержка с тикетом по адресуhttps://sourceforge.net/projects/wxhexeditor/support
___• Поддержка на форумеhttps://sourceforge.net/p/wxhexeditor/discussion/
___• Патч наhttps://sourceforge.net/p/wxhexeditor/patches/
С использованием
• wxHexEditor 0.23 • Debian 10 Buster • GNOME 3.30.2
решение3
Где я могу его установить ( rdiff
)?
Кто-то мне сказал,
rdiff
что генерирует сигнатуру и дельту, но я не тестировал, потому что не знаю, с чего начать. Откуда я могу установить его? и откуда я могу его запустить? Из windowscmd
или cygwin cmd?
CygwinВключает rdiff
. Он находится в rdiff-1.0.0-1
упаковке.
Откуда я могу его запустить ( rdiff
)?
Кто-то мне сказал,
rdiff
что генерирует сигнатуру и дельту, но я не тестировал, потому что не знаю, с чего начать. Откуда я могу установить его? и откуда я могу его запустить? Из windowscmd
или cygwin cmd?
Вы запускаете оболочку rdiff
Cygwin bash
.
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'");
Команда, аналогичная приведенной выше (заменив diff
и rdiff
изменив параметры команды по мере необходимости), должна работать.
Как узнать, rdiff
в какой упаковке находится товар?
Самый простой способ найти пакет, содержащий определенную команду, — использоватьПоиск пакетов Cygwinвеб-страница:
Прокрутите страницу вниз:
Нажмите наrdiff-1.0.0-1:
Это подтверждает, что rdiff-1.0.0-1
это правильный пакет для установки.
ВидетьУстановка и обновление пакетов Cygwinдля получения инструкций по установке.