Инструмент сравнения файлов и каталогов?
Я ищу то, что будет сравнивать каталоги и файлы, как Beyond Compare для Windows.
В основном это для контроля версий, но мне нужно использовать его и для развертывания.
20 ответов
сливаться
Meld - это инструмент, который может сравнивать и объединять файлы и каталоги. Это GUI аналог стандарта diff
а также patch
инструменты командной строки. (Смотрите man diff и man patch для более подробной информации)
Кроме того, множество систем контроля версий (таких как bzr
или же 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
Интерфейс может быть не очень сексуальным, но он очень мощный!
И если вы привыкли к другому *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
Krusader
Krusader - это бесплатный инструмент (доступен в Центре программного обеспечения), который показывает содержимое папок в сравнении, и вы можете синхронизировать с множеством различных опций. Вы можете фильтровать при синхронизации и сравнении.
Чтобы сравнить содержимое файла, вы просто помечаете два файла, выбираете "файл" > "сравнить содержимое", и они сравниваются по буквам. инструментом сравнения по умолчанию, используемым krusader, является инструмент KDE по умолчаниюKompare. Вы можете настроить krusader на использование любого другого инструмента сравнения, например, одного из приведенных выше.
Это самое полное решение, которое я когда-либо нашел, и это очень удобно. И он поддерживает все функции keybindungs, используемые Midnight Commander (синтаксис Norton Commander).
Я узнал о hashdeep две недели назад. И у этого есть некоторые сильные преимущества:
- В отличие от
meld
Это хорошо работает для очень больших папок. кудаmeld
становится чрезвычайно медленным и пользовательский интерфейс не отвечает (блокируется), hashdeep просто работает с постоянной скоростью - В отличие от
rsync
hashdeep обнаруживает перемещенные файлы - файлы с одинаковым содержимым, просто в другом каталоге.
Подробный вывод выглядит так:
...
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