Я ищу быстрый способ сравнить содержимое каталога. Можно ли сделать md5sum (или эквивалентную контрольную сумму) для всего каталога?
Использование Ubuntu Linux
Я ищу быстрый способ сравнить содержимое каталога. Можно ли сделать md5sum (или эквивалентную контрольную сумму) для всего каталога?
Использование Ubuntu Linux
Ответы:
Конечно - md5sum directory/*
Если вам нужно что-то более гибкое (например, для рекурсии каталога или сравнения хэшей), попробуйте md5deep.
apt-get install md5deep
md5deep -r directory
Чтобы сравнить структуру каталогов, вы можете дать ей список хешей для сравнения:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Это выведет все файлы в каталоге 2, которые не соответствуют каталогу 1.
Это не будет показывать файлы, которые были удалены из каталога1 или файлы, которые были добавлены в каталог2.
-j0
который отключает многопоточность (см. Справочную страницу).
md5deep
с sudo apt-get install md5deep
on, Ubuntu 16.04
но когда я попытался прочитать man-страницу, это говорит мне, что> Нет ручного ввода для md5deep
Если вы хотите увидеть разницу (если вообще что-то) между двумя каталогами, лучше всего подойдет rsync.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Это перечислит любые файлы, которые отличаются.
diff -qr /source/directory/ /destination/directory/
также покажет файлы, которые отличаются.
username@hostname:/destination/directory
Я думаю, что я ответил на этот вопрос раньше:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
дает: b1a5b654afee985d5daccd42d41e19b2877d66b1
идея заключается в том, что вы хэшируете все файлы, вырезаете хэши по одному на строку, сортируете их и хешируете, получая один хеш. это не зависит от имен файлов.
Приложение cfv весьма полезно, оно не только может проверять и создавать контрольные суммы MD5, но также может выполнять CRC32, sha1, torrent, par, par2.
создать файл контрольной суммы CRC32 для всех файлов в текущем каталоге:
CFV-C
создать файл контрольной суммы MD5 для всех файлов в текущем каталоге:
cfv -C -t md5 -f "текущий каталог.md5sums"
Чтобы создать отдельный файл контрольной суммы для каждого подкаталога:
cfv -C -r
Чтобы создать «супер» файл контрольной суммы, содержащий файлы во всех подкаталогах:
cfv -C -rr
Я использовал hashdeep, как объяснено в ответе аскубунту: Проверьте правильность скопированных файлов :
Чтобы вычислить контрольные суммы:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Чтобы проверить и перечислить различия:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Это имеет преимущество перед md5deep в том, что оно показывает переименованные (перемещенные), добавленные и удаленные файлы, а также позволяет избежать проблемы с файлами 0 длины, указанными в нижней части http://www.meridiandiscovery.com/how- в / validating-copy-results-using-md5deep .
Это сработало для меня: (запустите его в интересующем вас каталоге)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Вы можете создавать суммы MD5 для каждого отдельного файла, упорядочивать эти контрольные суммы в алфавитном порядке и иметь их (с символами новой строки или без них). Поскольку MD5 криптографичен, он должен прекрасно работать с хэшами хэшей.
Там должен быть определенный порядок вещей, иначе вы получите разные результаты для равных dirs.
И вы должны учитывать , что добавление какого - либо файл в одной директории будет полностью изменить результат, даже если это было только .directory
из .DS_Store
файла.
В качестве конкретного случая предположим, что вы хотите скопировать некоторые файлы из каталога 1 в каталог 2, а затем вы хотите проверить успешное копирование, используя сравнение md5.
Первый. перейдите в каталог directory1 и введите:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
который создаст ссылочный файл, содержащий сумму md5 для каждого файла в directory1. Как только это будет сделано, все, что вам нужно сделать, это перейти в каталог directory2 и набрать:
md5sum -c ~/Desktop/md5sum.txt
Программа md5sum извлекает каждый путь из файла md5sum.txt, вычисляет md5sum этого файла в папке назначения и затем сравнивает его с суммой, которую он сохранил в файле.
После того, как процесс будет завершен, вы получите сводку, такую как «Так много файлов не совпадают» или что-то в этом роде.
Мне нужно было проверить целостность резервных копий / зеркал, которые содержат большое количество файлов, и в итоге я написал программу командной строки под названием MassHash. Это написано на Python. GTK + Launcher также доступна. Вы можете проверить это ...