md5 sum(fdupes) vs sha256sum - 結果が異なる理由 - Ubuntuサーバー

md5 sum(fdupes) vs sha256sum - 結果が異なる理由 - Ubuntuサーバー

私は重複したファイルがたくさん含まれているディレクトリ構造を持っています。 (ディレクトリツリーには67,000個のファイルがあり、約8,000個の重複ファイルがあります。)もちろん、レプリカのバイトサイズと内容は同じですが、ファイル名はまったく異なります。 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

次に、重複した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の重複署名が得られました。

これは、fdupesで使用されるMD5署名が不足しているためですか? (バイトあたりのファイルサイズは言うまでもなく、まったく同じ内容のファイルが125個以上あることを知っています。

答え1

わかりました、わかりました - 明示的なスイッチ(-H)が指定されていない場合、fdupesはハードリンクされたファイルを無視します。これが重複ファイル数の違いが発生する理由です。 -H スイッチを使用して実行すると、重複回数は上記で引用したコードと同じです。

関連情報