我有大量文件偶尔具有不同名称的重复项,并希望向文件系统添加类似 fslint 的功能,以便可以对其进行重复数据删除,然后根据已知的 md5 值检查在指定位置创建的任何新文件。目的是在整个文件集合的初始求和之后,开销较小,因为它只需要将新文件的 md5 总和与现有总和的存储进行比较。此检查可以是日常工作,也可以作为文件提交过程的一部分。
checkandsave -f newfile -d destination
此实用程序是否已存在?存储fileid-md4sum对的最佳方法是什么,以便尽可能快地搜索新文件的总和?
r.e. 使用 rmlink:
rmlink 将校验和存储在哪里,还是每次运行都重复该工作?我想将校验和添加到文件元数据(或某种优化搜索速度的存储形式(中,以便当我有一个新文件时,我会生成它的总和,并根据现有的预先计算的总和进行检查,对于所有相同大小的文件。
是的,rmlint 可以通过--xattr-read --xattr-write
选项执行此操作。
cron 作业如下所示:
/usr/bin/rmlint -T df -o sh:/home/foo/dupes.sh -c sh:link --xattr-read --xattr-write/path/to/files
-T df
意味着只需查找重复的文件
-o sh:/home/foo/newdupes.sh
指定输出报告/外壳脚本的放置位置(如果需要(
-c sh:link
指定 shell 脚本应将重复项替换为硬链接或符号链接(或 btrfs 上的引用链接(
请注意,rmlint
仅在必要时计算文件校验和,例如,如果只有一个给定大小的文件,则不可能重复,因此不会计算校验和。
编辑:校验和存储在文件扩展属性元数据中。 默认值使用 SHA1,但您可以通过-a md5
将其切换到 md5