Инструмент сравнения файлов и каталогов?

Я ищу то, что будет сравнивать каталоги и файлы, как Beyond Compare для Windows.

В основном это для контроля версий, но мне нужно использовать его и для развертывания.

20 ответов

Решение

сливаться установить смесь

Meld - это инструмент, который может сравнивать и объединять файлы и каталоги. Это GUI аналог стандарта diff установить диффузоры а также patch установить патч инструменты командной строки. (Смотрите man diff и man patch для более подробной информации)

Кроме того, множество систем контроля версий (таких как bzr установить bzr-gtk или же git установить мерзавец) иметь возможность создавать различия между версиями.

Дифф твой друг.

diff -ur path1 path2

Это позволит сравнить все файлы, которые являются общими для path1 и path2.

Если вы измените -ur в -urN тогда это также покажет содержимое файлов, которые присутствуют только в одном из путей.

"Beyond Compare" доступно и для Linux.

Проверьте их URL для загрузки: http://www.scootersoftware.com/download.php

Использовать diff команда:

diff -u file1 file2

diff -u выбирает формат с несколькими строками контекста. Равнина diff file1 file2 только перечисляет отличающиеся линии. Есть еще много опций для управления форматом вывода, игнорирования различий только с пробелами и т. Д.

Если вы хотите записать вывод в файл, перенаправьте его:

diff -u file1 file2 >file1-file2.diff

Гном командующий установить Gnome Commander

Интерфейс может быть не очень сексуальным, но он очень мощный!

альтернативный текст

И если вы привыкли к другому *Commander (например, Нортону или тому подобное), вы не будете потеряны.

Инструменты командной строки

Вдохновленный этой записью в блоге.

разница

Список разных файлов:

diff -qr folder1 folder2

Листинг также содержание:

diff -Naur folder1 folder2

Rsync

Если два каталога не находятся на одном компьютере, rsync может быть самым простым решением. Обычно rsync используется для синхронизации каталогов, но вы можете запустить его в подробном и сухом режимах, поэтому он будет отображать только те файлы, которые он должен будет изменить.

rsync -rvnc --delete folder1 server:/path/to/folder2

Вы можете пропустить c если вы хотите сравнить файлы на основе временных меток и размеров файлов, чтобы ускорить все:

rsync -rvn --delete folder1 server:/path/to/folder2

KDiff3 установить kdiff3

Это графический интерфейс для diff для пользователей KDE (или если вы не возражаете против использования приложений Qt).

Также есть дирдифф установить Dirdiff для каталогов.

Krusader установить Krusader

Krusader - это бесплатный инструмент (доступен в Центре программного обеспечения), который показывает содержимое папок в сравнении, и вы можете синхронизировать с множеством различных опций. Вы можете фильтровать при синхронизации и сравнении.

Krusader

Чтобы сравнить содержимое файла, вы просто помечаете два файла, выбираете "файл" > "сравнить содержимое", и они сравниваются по буквам. инструментом сравнения по умолчанию, используемым krusader, является инструмент KDE по умолчаниюKompare. Вы можете настроить krusader на использование любого другого инструмента сравнения, например, одного из приведенных выше.

Это самое полное решение, которое я когда-либо нашел, и это очень удобно. И он поддерживает все функции keybindungs, используемые Midnight Commander (синтаксис Norton Commander).

Я узнал о hashdeep две недели назад. И у этого есть некоторые сильные преимущества:

  • В отличие от meldЭто хорошо работает для очень больших папок. куда meld становится чрезвычайно медленным и пользовательский интерфейс не отвечает (блокируется), hashdeep просто работает с постоянной скоростью
  • В отличие от rsynchashdeep обнаруживает перемещенные файлы - файлы с одинаковым содержимым, просто в другом каталоге.

Подробный вывод выглядит так:

...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG

hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 6233
Files partially matched: 0
            Files moved: 3695
        New files found: 19257
  Known files not found: 4713

Может быть, Мелд это то, что вы ищете. Или вот некоторые другие альтернативы.

Хороший способ сделать это сравнение - использовать "find" с "md5sum", а затем "diff".

Пример:

Используйте find, чтобы вывести список всех файлов в каталоге, затем вычислить хэш md5 для каждого файла и передать его в файл:

$find /dir1/ -type f -exec md5sum {} \; > dir1.txt

Проделайте ту же процедуру с другим каталогом:

$find /dir2/ -type f -exec md5sum {} \; > dir2.txt

Затем сравните результат двух файлов с "diff":

$diff dir1.txt dir2.txt

Эта стратегия очень полезна, когда два сравниваемых каталога не находятся на одном компьютере, и вам необходимо убедиться, что файлы в обоих каталогах совпадают.

Еще один хороший способ сделать работу - использовать git

git diff --no-index dir1/ dir2/

С наилучшими пожеланиями!

Unison - это быстрый инструмент синхронизации файлов, использующий алгоритм rsync и позволяющий просматривать различия перед обновлением между двумя местоположениями, будь то удаленное или локальное.

Попробуйте также FreeFileSync. Имеет неплохой интерфейс, приемлемую скорость сравнения, хорошую фильтрацию результатов сравнения, различные способы синхронизации. Он поставляется с инструментом мониторинга папок (RealTimeSync), который может запускать FreeFileSync (фактически любую команду или сценарий) при изменении этой конкретной папки (или папок) или файлов внутри. Действительно стоит попробовать.

Больше информации об этом здесь или здесь, где у вас есть PPA тоже

Со своей страницы ключевые особенности:

Сравните файлы (побайтно или по дате) и синхронизируйте их.

Без ограничений: можно синхронизировать произвольное количество файлов.

Поддержка Юникода.

Сетевая поддержка.

Встроенная поддержка очень длинных имен файлов (более MAX_PATH = 260 символов).

База данных синхронизации для распространения удаленных файлов и обнаружения конфликтов

Поддержка нескольких пар папок с определенной конфигурацией

Полная поддержка символических ссылок Windows/Linux и точек соединения Windows.

Легкий и легко доступный интерфейс: высоко оптимизирован для скорости и огромных массивов данных.

Алгоритмы написаны на C++ полностью.

Все показатели прогресса оптимизированы для максимальной производительности!

Создание пакетных заданий для автоматической синхронизации с или без графического интерфейса.

Фокус на удобстве использования:

Только необходимый функционал в пользовательском интерфейсе: нет перегруженных меню или значка джунглей.

Выберите все папки с помощью перетаскивания.

Последняя использованная конфигурация и настройки экрана сохраняются автоматически.

Поддерживайте и загружайте различные конфигурации с помощью перетаскивания, кнопки загрузки или командной строки.

Дважды щелкните, чтобы запустить внешнее приложение (например, показать файл в проводнике Windows)

Скопируйте и вставьте все данные сетки в виде текста

Удалите лишние / временные файлы прямо в основной сетке.

Щелкните правой кнопкой мыши контекстное меню.

Полная информация о состоянии и отчеты об ошибках

Сортировать списки файлов по имени, размеру или дате.

Поддержка файлов размером более 4 ГБ.

Возможность перемещения файлов в корзину вместо их удаления / перезаписи.

Игнорируйте каталоги "\RECYCLER" и "\System Volume Information" с фильтром по умолчанию. (Только для Windows)

Локализованные версии доступны для многих языков.

Удалить до копирования. Избегайте нехватки места на диске для больших заданий синхронизации.

Функциональность фильтра для включения / исключения файлов из синхронизации (без необходимости повторного сравнения!).

Включить / исключить определенные файлы из синхронизации временно.

Автоматически обрабатывать изменения летнего времени на томах FAT/FAT32.

Доступна портативная версия (выбирается через установщик).

Родная 64-битная версия.

Проверьте наличие обновлений в FreeFileSync автоматически.

Скопируйте заблокированные файлы с помощью службы теневого копирования томов Windows. (Только для Windows)

Создавайте регулярные резервные копии с макросами%time%, %date% в именах каталогов

Копирование файлов и папок время создания / доступа / изменения при синхронизации

Усовершенствованная стратегия блокировки, позволяющая использовать несколько процессов синхронизации (например, несколько устройств записи, один и тот же сетевой ресурс)

Я бы добавил, что он может управлять удаленными файлами, перемещая их в корзину или папку, указанную пользователем. Отметим один недостаток: программная документация в основном ориентирована на Windows, а не на Linux. Но это делает свою работу хорошо.

Вы можете использовать diffuse:

sudo apt-get install diffuse
diffuse file1 file2

Вы можете попробовать смесь.

Это репозитории и предоставляет графический интерфейс для сравнения файлов или папок.

Eclipse IDE немного тяжеловесен, если вы просто проводите сравнение, но он, между прочим, хорошо справляется с этой задачей. Вы можете выбрать 2 проекта, пути или файлы и сравнить их друг с другом, а также синхронизировать с серверами контроля версий.

ИМХО FreeFileSync очень хорош и полезнее, чем Meld. Он быстрый и стабильный, может выполнять синхронизируемые по стоимости стоимостные синхронизации, а также может экспортировать результаты сравнения в CSV-файл.

Ссылка на ланчпад

Лучший читаемый консольный «каталог с разницей в содержимом», который я нашел на данный момент:

diff -N dir1 dir2 | colordiff

diff -uN dir1 dir2 | colordiff(добавление контекста строки)

Или, если вы хотите использовать рекурсию:

diff -rN dir1 dir2 | colordiff

diff -urN dir1 dir2 | colordiff(добавление контекста строки)

colordiffможет быть установлен с помощьюsudo apt install colordiff.

Кроссплатформенность, простота, отсутствие суеты и функции сохранения профиля делают Jfilesync моим лучшим выбором

Сравнивать файлы

File_1.txt
Line1
Line2

File_2.txt
Line1
Line 2

Вы можете использовать команду cmp:

cmp -b "File_1.txt" "File_2.txt"

выход будет

a b differ: byte 11, line 2 is  62 2  40  

Для сравнения dirs (ваша потребность):

Вы можете использовать команду diff:

diff -r --brief dir1 dir2

man diff

  -r, --recursive
              recursively compare any subdirectories found

   -q, --brief
          report only when files differ
Другие вопросы по тегам