md5 soma (fdupes) vs sha256sum - por que resultados diferentes - servidor ubuntu

0

Eu tenho uma estrutura de diretório que eu sei que contém muitos arquivos duplicados. (a árvore dir tem 67K arquivos com cerca de 8K duplicados). Naturalmente, as duplicatas são todas do mesmo tamanho em bytes e o mesmo conteúdo, mas os nomes de arquivos são completamente diferentes. Ao usar fdupes / dir / caminho -rm eu recebo apenas 125 duplicatas. No entanto, se eu despejo o SHA256 de todo o conteúdo da árvore dir em um arquivo de texto:

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

e depois grep para assinaturas SHA256 duplicadas:

  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

Após a execução do código, recebo cerca de 8000 assinaturas duplicadas.

Isso é devido à deficiência de assinatura MD5 que o fdupes usa? (Eu sei que tenho mais de 125 arquivos com exatamente o mesmo conteúdo, sem mencionar o tamanho do arquivo byte-by-byte.

    
por sheikhness 22.05.2018 / 12:20

1 resposta

1

Ok, eu descobri - acontece que os fdupes irão desconsiderar arquivos com hardlink se nenhum switch explícito (-H) for dado. É por isso que a diferença no número de arquivos duplicados. Ao executar com a opção -H, o número de duplicatas é o mesmo que o código citado acima produz.

    
por 22.05.2018 / 15:38