2017-07-11 58 views
0

正如在本文https://medium.com/@mpreziuso/is-gzip-deterministic-26c81bfd0a49中所解释的,两个.tar.gz文件的md5是完全相同的一组文件的压缩文件。这是因为它例如在压缩文件的标题中包含时间戳。如何创建存档相同的md5哈希相同的内容在Python中?

在第3级的解决方案提出,我会idealy喜欢用第一个至极是:

我们可以使用-n标志的gzip,这将使gzip的省略时间戳和文件名称来自文件头;

而且这个解决方案工作得很好:

tar -c ./bin |gzip -n >one.tar.gz 
tar -c ./bin |gzip -n >two.tar.gz 
md5sum one.tgz two.tgz 

不过,我不知道什么会做在python的好方法的想法。 有没有办法与tarfile(https://docs.python.org/2/library/tarfile.html)做到这一点?

+1

是有一些原因,你无法启动,你只是写作为外部进程的命令? 'os.system(“tar -c ./bin | gzip -n> one.tar.gz”)' –

+2

为'gzip.GzipFile()'使用明确的'mtime'参数有什么问题? –

回答

1

作为解决方法,您可以使用bzip2压缩。它似乎并不存在这个问题:

import tarfile 

tar1 = tarfile.open("one.tar.bz2", "w:bz2") 
tar1.add("bin") 
tar1.close() 

tar2 = tarfile.open("two.tar.bz2", "w:bz2") 
tar2.add("bin") 
tar2.close() 

运行md5给出:

[email protected]:~/test$ md5sum one.tar.bz2 two.tar.bz2 
e9ec2fd4fbdfae465d43b2f5ecaecd2f one.tar.bz2 
e9ec2fd4fbdfae465d43b2f5ecaecd2f two.tar.bz2 
相关问题