通过哈希比较文件夹内容。
folderhash的Python项目详细描述
通过哈希比较文件夹内容。 文件i/o和散列是在线程中使用Curio库完成的,以使比较尽可能快!
我使用folderhash
来额外保证大的或重要的文件副本已经被准确地执行。
安装
从pypi安装应该很容易:
$ pip install folderhash
folderhash
仅支持python 3.6或更高版本。
演示
$ mkdir -p /tmp/demo/a /tmp/demo/b # just some setup $cd /tmp/demo $ touch a/a a/b a/c b/a b/b b/d $echo"DIFFERENT CONTENT" >> a/b $ folderhash a b # the simplest case--compare two folders 9fb5d41e2533b73381bdde8e3ac2d60a6a18467674771187595d83e9bfa30909 a/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a b/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a a/c ABSENT b/c ABSENT a/d a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a b/d $# you can change the hash algorithm! $# all of the algorithms in your Python's `hashlib` are available $# default is sha3_256 $ folderhash -s md5 a b 128edd12d0b04e23d10c4747d0da2c03 a/b d41d8cd98f00b204e9800998ecf8427e b/b d41d8cd98f00b204e9800998ecf8427e a/c ABSENT b/c ABSENT a/d d41d8cd98f00b204e9800998ecf8427e b/d $# it works with relative paths, too $cd a $ folderhash . ../b 9fb5d41e2533b73381bdde8e3ac2d60a6a18467674771187595d83e9bfa30909 ./b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a ../b/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a ./c ABSENT ../b/c ABSENT ./d a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a ../b/d $# you can do the hashing separately and compare at a later time $# absolute paths are always shown here $cd .. $ folderhash a > a.txt $ folderhash b > b.txt $ folderhash -a a.txt -b b.txt 9fb5d41e2533b73381bdde8e3ac2d60a6a18467674771187595d83e9bfa30909 /tmp/demo/a/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a /tmp/demo/b/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a /tmp/demo/a/c ABSENT /tmp/demo/b/c ABSENT /tmp/demo/a/d a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a /tmp/demo/b/d $# the format of the hash files is simple: {hash_value}<SP>{full_path} $ cat a.txt a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a /tmp/demo/a/a 9fb5d41e2533b73381bdde8e3ac2d60a6a18467674771187595d83e9bfa30909 /tmp/demo/a/b a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a /tmp/demo/a/c
更改日志
截至2017年8月8日的变化
1.0.1<;2017年8月8日>;
- 一些自述文件修复程序
- 将pypi开发状态分类器从beta改为production/stable
- 在生成输出时,显示相对于输入参数的路径,而不是绝对路径。我想这样更容易理解。
- 为空哈希文件的输入添加一些错误检查
1.0.0<;2017年8月7日>;
- 初始稳定释放到PYPI!
许可证
麻省理工学院。有关详细信息,请参阅LICENSE.rst
文件。