md5 sum (fdupes) vs sha256sum – почему разные результаты – сервер Ubuntu

У меня есть структура каталогов, которая, как я знаю, содержит много дубликатов файлов. (у дерева каталогов есть 67K файлов с приблизительно 8K дубликатами). Естественно, дубликаты имеют одинаковый размер в байтах и ​​одинаковое содержимое, но имена файлов совершенно разные. При использовании fdupes / dir / path -rm я получаю только 125 дубликатов. Однако, если я выгружу SHA256 всего содержимого дерева каталогов в текстовый файл:

input_dir=$1 IFS=$'\n' for i in $(find ${input_dir} -type f); do sha256sum "${i}" >> dupfilenames.txt done 

и затем grep для дублирующих подписей SHA256:

  cat dupfilenames.txt | cut -d " " -f1 | sort | uniq | while read sha; do count=`cat dupfilenames.txt | grep ${sha} | wc -l` if [ $count -gt 1 ]; then echo "${sha}:${count}" IFS=$'\n' files=( $(cat dupfilenames.txt | grep ${sha} | cut -d " " -f3) ); orig_size=`stat -c%s "${files[0]}"` for i in "${files[@]:1}"; do if [ $orig_size -eq `stat -c%s "${i}"` ]; then echo "Origsize:${orig_size} vs. `stat -c%s "${i}"` '${i}'" else echo "SHA matches but filesize doesn't for '${i}'!!!" fi done fi done 

После выполнения кода я получаю около 8000 дубликатов подписей.

Это из-за недостатка подписи MD5, которую использует fdupes? (Я точно знаю, что у меня гораздо больше 125 файлов с одинаковым содержимым, не говоря уже о байтовом размере файла).

Хорошо, я понял это – оказывается, fdupes будет игнорировать жестко связанные файлы, если не указан явный ключ (-H). Именно поэтому разница в количестве дубликатов файлов. При работе с ключом -H количество дубликатов совпадает с приведенным выше кодом.