Сравнение двух больших каталогов - PullRequest
3 голосов
/ 03 марта 2009

У меня есть большой каталог, который содержит только вещи в CS и Math. Это более 16 ГБ в размере. Типы текстовые, png, pdf и chm. В настоящее время у меня есть две ветви: ветка моего брата и моя. Исходные файлы были одинаковыми. Мне нужно сравнить их. Я пытался использовать Git, но есть долгое время загрузки.

Каков наилучший способ сравнения двух больших каталогов?

[Смешанный раствор]

  1. Выполните "ls -R> different_files" в обоих каталогах [1]
  2. "sdiff <(echo file1 | md5deep) <(echo file2 | md5deep)" [2] </li>

Что вы думаете? Есть ли недостатки?

[1] благодаря Полу Томблин [2] большое спасибо всем ответчикам!

Ответы [ 6 ]

6 голосов
/ 23 ноября 2012

Использовать fslint: веб-сайт . Одним из вариантов инструмента является «Дубликаты». Согласно описанию с сайта: Одной из наиболее часто используемых функций FSlint является возможность поиска дубликатов файлов. Самый простой способ удалить ворс с жесткого диска - это удалить любые дублирующиеся файлы, которые могут существовать. Часто пользователь компьютера может не знать, что у него есть четыре, пять или более копий одной и той же песни в их музыкальной коллекции под разными именами или каталогами. Любой тип файлов, будь то музыка, фотографии или рабочие документы, может быть легко скопирован и скопирован на ваш компьютер. По мере того как дубликаты собираются, они разъедают свободное место на жестком диске. Первый пункт меню, предлагаемый FSlint, позволяет найти и удалить эти дубликаты файлов.

2 голосов
/ 03 марта 2009

Используйте md5deep для создания рекурсивных списков md5sum для каждого файла в этих каталогах.

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

2 голосов
/ 03 марта 2009

Как сравнить 2 папки без ранее существующих команд / продуктов:

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

Запустите эту программу в обеих папках.

Затем вы просто сравниваете 2 выходных файла, чтобы увидеть, совпадают ли они. Чтобы сравнить эти 2 файла, вы просто загружаете их в строку и сравниваете строку.

Используемый вами алгоритм хеширования не имеет значения. Вы можете использовать MD5, SHA, CRC, ... Вы также можете использовать размер файла в выходных файлах, чтобы уменьшить вероятность коллизий.

Как сравнить 2 папки с уже существующими командами / продуктами:

Теперь, если вам нужна программа, которая это делает, используйте diff -r или windiff для систем на базе Windows.

1 голос
/ 03 марта 2009

Я бы diff сравнял бы вывод md5sum * | sort

Это приведет вас к файлам, которые отличаются / отсутствуют

1 голос
/ 03 марта 2009

Вы просто пытаетесь узнать, какие файлы присутствуют в одном, а какие нет в другом, и наоборот? Пара предложений:

  1. Выполните команду "ls -R" в обеих директориях, перенаправьте в файлы и измените файлы.

  2. Сделайте между ними "rsync -n", чтобы увидеть, что rsync будет копировать, если ему будет разрешено копировать. (-n означает не выполнять rsync, просто показать, что он будет делать, если вы запустите его без -n)

0 голосов
/ 21 мая 2009

Я знаю, что на этот вопрос уже был дан ответ, однако, если вы сами не пишете такой инструмент, есть очень хорошо работающий проект с открытым исходным кодом под названием tardiff , доступный на sourceforge, который в основном работает точно что вы хотите, и даже поддерживает автоматическое создание патчей (очевидно, в формате tar) для учета различий.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...