ディレクトリ内のすべてのファイルの md5sum を取得する Python スクリプトを作成しようとしています (Linux)。以下のコードで行ったと思います。
これを実行して、ディレクトリ内のファイルが変更されておらず、削除するファイルが追加されていないことを確認したいと考えています。
問題は、ディレクトリ内のファイルに変更を加えた後、元に戻す場合です。以下の関数を実行すると、別の結果が得られます。(変更したファイルを元に戻しましたが。
誰でもこれを説明できますか。また、回避策を考えられるかどうか教えてください。
def get_dir_md5(dir_path):
"""Build a tar file of the directory and return its md5 sum"""
temp_tar_path = 'tests.tar'
t = tarfile.TarFile(temp_tar_path,mode='w')
t.add(dir_path)
t.close()
m = hashlib.md5()
m.update(open(temp_tar_path,'rb').read())
ret_str = m.hexdigest()
#delete tar file
os.remove(temp_tar_path)
return ret_str
編集: これらの素晴らしい人々が答えたように、tarには変更日などのヘッダー情報が含まれているようです。zip を使用すると、別の形式または別の形式で動作しますか?
回避策の他のアイデアはありますか?