@ Kibbee Чтобы предотвратить это, вы должны принять во внимание что-то, кроме содержимого данных каждого файла и того, как именно вы проверяете суммы файлов. Дано: [контрольные суммы] 1. A (Справочник) - Файл1 [ABC] - Файл2 [CBA] 2. B (Справочник) - Файл1 [ABC] - B1 (Справочник) - Файл2 [CBA] 3. C (Справочник) - Файл4 [ABC] - file5 [CBA] 4. D (Каталог) - Файл1 копию [ABC] - Файл2 копию [CBA] Справочник , и Б не являются идентичными , хотя они содержат одни и те же файлы (хотя и в В1 , Файл2 в подкаталог) , По вашему примеру, A и C будут считаться идентичными, потому что
Джейкоб Лайлс
Ответы:
36
Конечно - md5sum directory/*
Если вам нужно что-то более гибкое (например, для рекурсии каталога или сравнения хэшей), попробуйте md5deep.
apt-get install md5deep
md5deep -r directory
Чтобы сравнить структуру каталогов, вы можете дать ей список хешей для сравнения:
Не то, что я имел в виду, а то, что я хотел :) Я имел в виду рекурсивно, и получал ОДИН хеш в конце, но я думаю, что это можно сделать с помощью md5deep -l и хэширования самого вывода.
pufferfish
1
Порядок хеширования не согласован, поэтому придется отсортировать вывод перед хешированием
pufferfish
1
Чтобы получить детерминированный порядок, используйте -j0который отключает многопоточность (см. Справочную страницу).
Иоганн
1
@ ShaneMadden ♦ Я установил md5deepс sudo apt-get install md5deepon, Ubuntu 16.04но когда я попытался прочитать man-страницу, это говорит мне, что> Нет ручного ввода для md5deep
Kasun Siyambalapitiya
27
Если вы хотите увидеть разницу (если вообще что-то) между двумя каталогами, лучше всего подойдет rsync.
идея заключается в том, что вы хэшируете все файлы, вырезаете хэши по одному на строку, сортируете их и хешируете, получая один хеш. это не зависит от имен файлов.
Приложение cfv весьма полезно, оно не только может проверять и создавать контрольные суммы MD5, но также может выполнять CRC32, sha1, torrent, par, par2.
создать файл контрольной суммы CRC32 для всех файлов в текущем каталоге:
CFV-C
создать файл контрольной суммы MD5 для всех файлов в текущем каталоге:
cfv -C -t md5 -f "текущий каталог.md5sums"
Чтобы создать отдельный файл контрольной суммы для каждого подкаталога:
cfv -C -r
Чтобы создать «супер» файл контрольной суммы, содержащий файлы во всех подкаталогах:
Вы можете создавать суммы MD5 для каждого отдельного файла, упорядочивать эти контрольные суммы в алфавитном порядке и иметь их (с символами новой строки или без них). Поскольку MD5 криптографичен, он должен прекрасно работать с хэшами хэшей.
Там должен быть определенный порядок вещей, иначе вы получите разные результаты для равных dirs.
И вы должны учитывать , что добавление какого - либо файл в одной директории будет полностью изменить результат, даже если это было только .directoryиз .DS_Storeфайла.
Технически можно получить один и тот же хеш для разных каталогов. Если бы у dir A было 2 файла с содержимым «ab» и «c», а у dir B было 2 файла с содержимым «a» и «bc», то хэширование только данных в файлах дало бы те же результаты, даже если у них есть файлы с разное содержание. Я даже не уверен, как можно определить MD5Sum каталога.
Кибби
1
В качестве конкретного случая предположим, что вы хотите скопировать некоторые файлы из каталога 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 также доступна. Вы можете проверить это ...
Ответы:
Конечно -
md5sum directory/*
Если вам нужно что-то более гибкое (например, для рекурсии каталога или сравнения хэшей), попробуйте md5deep.
Чтобы сравнить структуру каталогов, вы можете дать ей список хешей для сравнения:
Это выведет все файлы в каталоге 2, которые не соответствуют каталогу 1.
Это не будет показывать файлы, которые были удалены из каталога1 или файлы, которые были добавлены в каталог2.
источник
-j0
который отключает многопоточность (см. Справочную страницу).md5deep
сsudo apt-get install md5deep
on,Ubuntu 16.04
но когда я попытался прочитать man-страницу, это говорит мне, что> Нет ручного ввода для md5deepЕсли вы хотите увидеть разницу (если вообще что-то) между двумя каталогами, лучше всего подойдет rsync.
Это перечислит любые файлы, которые отличаются.
источник
diff -qr /source/directory/ /destination/directory/
также покажет файлы, которые отличаются.username@hostname:/destination/directory
Я думаю, что я ответил на этот вопрос раньше:
дает:
b1a5b654afee985d5daccd42d41e19b2877d66b1
идея заключается в том, что вы хэшируете все файлы, вырезаете хэши по одному на строку, сортируете их и хешируете, получая один хеш. это не зависит от имен файлов.
источник
Приложение cfv весьма полезно, оно не только может проверять и создавать контрольные суммы MD5, но также может выполнять CRC32, sha1, torrent, par, par2.
создать файл контрольной суммы CRC32 для всех файлов в текущем каталоге:
создать файл контрольной суммы MD5 для всех файлов в текущем каталоге:
Чтобы создать отдельный файл контрольной суммы для каждого подкаталога:
Чтобы создать «супер» файл контрольной суммы, содержащий файлы во всех подкаталогах:
источник
Я использовал hashdeep, как объяснено в ответе аскубунту: Проверьте правильность скопированных файлов :
Чтобы вычислить контрольные суммы:
Чтобы проверить и перечислить различия:
Это имеет преимущество перед md5deep в том, что оно показывает переименованные (перемещенные), добавленные и удаленные файлы, а также позволяет избежать проблемы с файлами 0 длины, указанными в нижней части http://www.meridiandiscovery.com/how- в / validating-copy-results-using-md5deep .
источник
Это сработало для меня: (запустите его в интересующем вас каталоге)
источник
Вы можете создавать суммы MD5 для каждого отдельного файла, упорядочивать эти контрольные суммы в алфавитном порядке и иметь их (с символами новой строки или без них). Поскольку MD5 криптографичен, он должен прекрасно работать с хэшами хэшей.
Там должен быть определенный порядок вещей, иначе вы получите разные результаты для равных dirs.
И вы должны учитывать , что добавление какого - либо файл в одной директории будет полностью изменить результат, даже если это было только
.directory
из.DS_Store
файла.источник
В качестве конкретного случая предположим, что вы хотите скопировать некоторые файлы из каталога 1 в каталог 2, а затем вы хотите проверить успешное копирование, используя сравнение md5.
Первый. перейдите в каталог directory1 и введите:
который создаст ссылочный файл, содержащий сумму md5 для каждого файла в directory1. Как только это будет сделано, все, что вам нужно сделать, это перейти в каталог directory2 и набрать:
Программа md5sum извлекает каждый путь из файла md5sum.txt, вычисляет md5sum этого файла в папке назначения и затем сравнивает его с суммой, которую он сохранил в файле.
После того, как процесс будет завершен, вы получите сводку, такую как «Так много файлов не совпадают» или что-то в этом роде.
источник
Мне нужно было проверить целостность резервных копий / зеркал, которые содержат большое количество файлов, и в итоге я написал программу командной строки под названием MassHash. Это написано на Python. GTK + Launcher также доступна. Вы можете проверить это ...
http://code.google.com/p/masshash/
источник