Ручное, графическое программное обеспечение для сравнения папок в Linux

Существуют десятки инструментов сравнения/синхронизации/объединения файлов/папок, но я ищу определенный графический интерфейс и функциональные возможности, которые довольно просты, но, к сожалению, довольно трудно найти:

  1. Вручную выберите две папки для сравнения; ни один не указан как источник или назначение
  2. Отсканируйте две папки и отобразите различия:
    • дисплей представляет собой двухпанельный интерфейс с горизонтальным разделением
    • в каждой панели отображается отдельное дерево для соответствующей папки
    • папки раскрываются в каждом дереве, только если они содержат новые или измененные файлы
    • «изменено» может быть либо по содержимому (для точности), либо по отметке времени (для скорости)
    • в каждой расширенной папке отображаются только новые или измененные файлы
  3. Выберите файлы несколькими способами:
    • начните с выбора всех новых файлов в левом или правом дереве; или все измененные файлы в обоих деревьях (затронутые папки автоматически разворачиваются, если они были ранее свернуты)
    • при желании отмените выбор файлов в определенной папке, просто свернув ее
    • при желании можно точно настроить выбор отдельных файлов с помощью обычных действий мыши, таких как одиночный щелчок, Shift-щелчок, Control-щелчок, Shift-перетаскивание, Control-перетаскивание и т. д.
    • в качестве альтернативы, сделайте выбор вручную, просто с помощью мыши, не запуская все новые/измененные файлы
  4. Копировать выбранные файлы слева направо или справа налево; или удалить выбранные файлы из левого, правого или обоих деревьев
  5. Повторяйте шаги 3–4 в интерактивном режиме, время от времени обновляя представление, возвращаясь к шагу 2, пока две папки не станут идентичными.

Я делаю такое сравнение каждый день, чтобы вручную синхронизировать папки между машинами с помощью переносного диска. Моя типичная папка содержит около 30 000 файлов в 5 000 подпапках, а общий размер составляет около 30 Гбайт. Из-за размера я на самом деле не сравниваю содержимое файлов, а только временные метки. Типичный сеанс занимает около 2-3 минут для однодневных изменений. Например, после одного месяца изменений это может занять около 15 минут, потому что есть еще что проверить.

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

Я использую araxis merge уже более 10 лет. Его модель использования точно соответствует описанию, и я был очень доволен этим, по крайней мере, в Windows. К сожалению, он не только коммерческий, но и недоступен для Linux. Использование его над вином - очень плохой опыт. Хуже того, при обновлении до Kubuntu 14.04 с Wine 1.4-1.7 программа зависает, когда я перемещаю ее на другой экран. Так что я снова ищу альтернативы.

Beyond Compare предлагает ту же функциональность и доступна для Linux, но, опять же, она является коммерческой. Кроме того, он не может автоматически расширять папки, такие как слияние Araxis (только если они содержат новые или измененные файлы). Вы должны развернуть все папки, чтобы увидеть различия.

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

Итак, есть ли какая-либо другая альтернатива Linux, предпочтительно бесплатная, которая предлагает описанную выше функциональность?

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

Ответы (3)

Есть один интересный кандидат, которого вы не упомянули — я не пытался математично его подгонять под ваши требования, но попробовать, безусловно, стоит.

Я думаю, что KDE kompareявляется одним из лучших инструментов в этой области, Directoy diff GUI .

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

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

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


скриншот <code>kompare</code>

«Компаре» исходным загрузчиком был Robamler в en.wikipedia - перенесено из en.wikipedia; было заявлено, что передача была сделана пользователем: Nog2.. Лицензия Creative Commons Attribution-Share Alike 3.0 через Wikimedia Commons

man kompare

Чтобы попробовать,sudo apt-get install kompare

Спасибо. Я пробовал kompare, но после того, как немного поигрался, мне кажется, что он далеко не тот функционал и интерфейс, которые я описал.

РЕДАКТИРОВАТЬ: Плохо - проигнорируйте ответ - я не видел, что автоматические сравнения - это то, что вы не хотите использовать. Использование вывода --verbose rsync может в любом случае помочь увидеть различия, даже если вы просто используете эту --dry runопцию.

Основываясь на использовании, которое вы описываете, rsyncэто может быть очень быстрой альтернативой. Скажем, у вас есть папка с именем Important_stuff, которую вы хотите синхронизировать между компьютером и внешним жестким диском. Вы можете использовать команду:

rsync --recursive --update --times --verbose --exclude=Music* 'path/to/Important_stuff/ /path/to/externalhd/Important_stuff_backup

Опция --recursiveпойдет вглубь папки для подпапок и файлов, --updateопция только заменит старые файлы более новыми файлами с тем же именем и добавит в целевую папку новые файлы, оставив все остальное на месте. Параметр --timesуказывает rsync использовать только отметку времени для сравнения, --verboseчтобы иметь вывод команды, особенно если возникают проблемы --exclude, и помогает исключить файлы и папки, которые вы не хотите дублировать. Нужно быть осторожным с путем - исходная папка нуждается в «/» в конце, а целевой не нужен.

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

Я использую этот метод в течение многих лет, и он хорошо работает для регулярных резервных копий вручную. Этот метод не требует графического интерфейса, но вы можете использовать файловый менеджер, такой как Double Commander, для простых сравнений. На скриншоте показан выбор файлов, которые существуют в одной папке и отсутствуют в другой (Отметить>Сравнить каталоги):

Скриншот Двойной командир

Могу ли я предложить попробовать kdiff3 , хотя графический интерфейс не совсем такой, как вы указали, поскольку он перечисляет объединенное представление с разными цветами файлов и каталогов, он может выполнять почти все операции, которые вам требуются, плюс 3-стороннее слияние.

  • Бесплатно/бесплатно
  • Несколько платформ, KDE, Windows, Mac, другие
  • При желании скрыть соответствующие файлы
  • При желании укажите папку назначения
  • Вы можете выбрать между A->B, B<-A, Удалить оба и для текстовых файлов Построчное объединение, Строки из A, затем B, Строки из B, затем A и т. д.
  • 3 пути слияния
  • Множество, менее тщательных и безопасных способов ускорить процесс.
  • Игнорировать шаблоны для имен файлов и каталогов
  • Многие другие настройки, такие как игнорирование различий в пробелах.

введите описание изображения здесь