Я хотел бы найти md5sum
(или аналогичный расчет) папки, не сжимая ее в архив.
Например, если в папке MyFolder
у нас есть файлы 1.txt
, 2.txt
и 3.txt
, содержащие:
1.txt
Текст в 1.txt
2.txt
Текст в 2.txt
3.txt
Текст в 3.txt
Как я могу рассчитать все md5sum
это MyFolder
? Есть ли способ? Я хочу использовать это, чтобы проверить, имеют ли две папки одинаковое содержимое.
Это может быть использовано, чтобы проверить, равны ли два диска или папки. Я хотел бы простой способ сделать это.
files
checksum
verification
GarouDan
источник
источник
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
спасибо большое.-o
опцию для обработки типов файлов.Если вы не хотите архивировать это, возможно, вы могли бы сделать что-то вроде этого
Возможно, вам придется адаптировать
find
команды, чтобы быть более точным.РЕДАКТИРОВАТЬ Вы можете добавить
-exec
к вашему поисковому вызову, чтобы сравнить содержимое файлов. Что-то похожее на это:Помните, что вы можете адаптировать это.
источник
Одним из способов проверки может быть создание md5sum на основе объединения всех файлов в папке и ее подпапках. Помните, что для этого также необходимо, чтобы файлы имели одинаковые имена (так как они должны быть в одинаковом порядке сортировки). Следующий код должен работать:
Если вы действительно заботитесь об именах файлов и т. Д., Вы можете использовать цикл для сравнения содержимого
${_files_in_old_dir}
и${_files_in_new_dir}
. Это должно работать в большинстве случаев (по крайней мере, проверяет количество файлов в каталоге и его подкаталогах).источник
globstar
. В чем ошибка?Я заметил, что оригинальный пост довольно старый, однако, я думаю, что эта информация все еще может быть полезна для тех, кто ищет решение для проверки правильности копирования файлов. Rsync может быть лучшим методом для копирования данных, и ответы, приведенные в этой теме, хороши, однако для тех, кто не знаком с Linux, я попытаюсь дать более подробное объяснение.
Сценарий: вы просто скопировали данные с диска на другой, с большим количеством подкаталогов и файлов. Вы хотите убедиться, что все данные скопированы правильно.
Сначала убедитесь, что md5deep установлен, введя команду
md5deep -v
.Если вы получаете сообщение, в котором говорится что-то вроде «команда не найдена», то установите md5deep by
apt-get install md5deep
.Предполагается, что вы хотите иметь дело только с обычными файлами. Если вы хотите работать с другими типами файлов, обратитесь к флажку -o в руководстве по md5deep. (
man md5deep
)Теперь все готово, и мы предполагаем, что вы скопировали файлы из
/mnt/orginal
в/mnt/backup
, заменив их на любые каталоги, которые вы используете.Сначала перейдите в исходный каталог, это исходный источник для файлов, которые вы скопировали или скопировали:
cd /mnt/orginal
Затем создайте контрольную сумму каждого файла:
md5deep -rel -o f . >> /tmp/checksums.md5
Эта команда объяснила:
-r
включает рекурсивный режим-e
отображает индикатор прогресса-l
включает относительные пути к файлам.-o f
работать только на обычных файлах (не блочных устройствах, именованных каналах и т. д.).
говорит md5deep запускаться в текущем каталоге.>> /tmp/checksums.md5
говорит md5deep перенаправить весь вывод/tmp/checksums.md5
.Обратите внимание, если вы хотите перезаписать содержимое в предыдущих версиях
/tmp/checksums.md5
, используйте,>
а не>>
Обратите внимание, что эта команда может занять довольно много времени, в зависимости от скорости ввода-вывода и размера данных. Вы можете поэкспериментировать с nice и / или ionice, чтобы увеличить производительность md5deep, но это выходит за рамки этого ответа.
Когда создание контрольных сумм завершено, у вас есть файл, в котором есть записи, похожие на:
Первый столбец - контрольная сумма md5, а второй столбец - относительный путь к файлу, к которому принадлежит контрольная сумма.
Если вы хотите увидеть, сколько файлов существует в файле контрольной суммы, введите команду:
wc /tmp/checksums.md5 -l
Теперь вы хотите проверить правильность скопированных данных:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
Единственное отличие от того, когда мы создали контрольные суммы, - это -X, который отображает текущий хэш файла, если запись в файле checkums.md5 не совпадает. Таким образом, к концу теста, если
/tmp/compare.result
он пуст, вы можете быть уверены, что все файлы скопированы правильно, поскольку контрольные суммы совпадают.Обратите внимание, что только файлы, перечисленные в
/tmp/checksums.md5
файле, будут проверены на правильность контрольной суммы. Если в/mnt/backup
каталоге есть какие-либо дополнительные файлы , md5deep не уведомит вас об этом.Заметки:
Вам не обязательно использовать перенаправление для хранения выходных файлов. Обратитесь к руководству md5deep для получения дополнительной информации.
Возможно, вам придется запускать команды md5deep от имени пользователя root, в зависимости от прав доступа к файлам, с которыми вы работаете.
источник
Если вы хотите рекурсивно проверить различия между двумя каталогами
/path1
и/path2
без использованияmd5deep
:Объяснение:
path1
чтобы все строки были напечатаныfind
относительноpath1
(cd /path1
)&& find . -type f
)find
как вход дляmd5
(| xargs md5
)Вывод будет выглядеть так, если они будут отличаться:
источник