Контекст:
У меня большой терабайтный диск с различными типами больших медиа-файлов, ISO-файлов и т.д. Я хотел бы проверить его содержимое, используя md5sum
на первом мегабайте из-за скорости / производительности.
Вы можете создать сумму как это:
FILE=four_gig_file.iso
SUM=$(head -c 1M "$FILE" | md5sum)
printf "%s *%s\n" ${SUM%-} "$FILE" >>test.md5
Как бы вы проверили это, поскольку подпись первого мегабайта отличается от подписи всего файла?
Я видел это на других языках, но мне интересно, как это сделать на Bash. Я экспериментировал с различными перестановками md5sum -c
включая каналы и еще много чего.
Вместо того, чтобы использовать md5sum -c
, вам придется пересчитывать хэши в новый файл, а затем 'diff' их?
Вы можете использовать
find /directory/path/ -type f -print0 | xargs -0 md5sum blah blah
работать с большим количеством файлов.
PS: Rsync не вариант
ОБНОВЛЕНИЕ 2: так, как оно есть -
Используя head, find и md5sum; затем можно довольно быстро создать файл из исходного каталога, а затем проверить его с помощью diff на другой стороне после вычисления места назначения. Есть ли для этого умные однострочники или сценарии?