请教一下文件去重软件

29 天前
 276562578

找了很多的文件去重软件,都似乎没法满足我的需求,想着干脆自己写一个,写之前问问 v 友是否有我不知道的软件实际可以满足我的需求,避免造轮子

我的去重是经常乱放文件导致的,我希望能够把这些文件整理一下,比如我现在有一个备份的文件 photo

  1. 我想找到 photo1 和 photo2 中完全一致的文件,删除 photo2 的,保留 photo1 的
  2. 如果有文件名一致,但文件内容不一致的,可以根据规则,比如文件大小,时间来自动全部处理掉
  3. photo1 中的文件散列值 md5 可以自动的存下来,免得重扫
  4. 对于文件大小不一致这种肯定不可能一致的直接跳过
  5. (可选)对于超过一定大小如 1G 的,文件 bit 数也完全一致的,只抽样比对节省时间,抽样结果一致再全部验证确保完全一致
  6. 散列算法保证几乎不可能有意外
  7. (可选)散列算法要是 xxhash 这种超快的就最好了

我的核心诉求是前三条

感谢 v 友

898 次点击
所在节点    软件
13 条回复
bzw875
29 天前
我一般是这么做的,把诉求丢给 chatGPT ,写我看懂的语言,比如 node.js 。
然后自己先调试。免得 AI 幻觉把我文件删除了。
你可以让他写 Python ,或者 shell
Cu635
29 天前
dupegure 试一试?

这个在 GUI 操作上可能还是有提升空间,不过我用了一阵子了感觉功能上没啥大毛病。

它默认情况是普通模式,对文件是看内容完全一致进行判断;可以设置为“图片”模式,这样它对图片文件就是看图像内容判断一致性的(视频不行)。

不过 2 那个它倒是没有,因为这种时候 dupegure 会认为文件不一致,不会出现在结果当中。当然设置了“图片”的话就是看图像内容了。

4 、5 、6 、7 这些应该说是开发需求,而不是使用需求了……
NoOneNoBody
29 天前
windows:clonespy 免费不开源 1/3/4/6/7 它主要是根据 size+crc32 的,好像也有 name 或 name+size 的,就是你说的 2 ,但我基本没用过这种方式
5 即使其他工具应该没有,除非自己写

其他平台不知道
sunnyadamm
29 天前
duplicate cleaner pro 貌似比较符合你,windows 的
276562578
29 天前
@Cu635 2 还是挺重要的,因为一些原因我的图片很多是同名但是有些是缩略图,感觉是得自己写了
276562578
29 天前
@NoOneNoBody 2 主要是遇到重复的文件后的处理方式,一个一个选就很麻烦,我去试试看这个软件
276562578
29 天前
@sunnyadamm 好的,这个我也试试看
NoOneNoBody
29 天前
自己写我也写了,python
1. 两组 dataframe 'fullpath' df1/df2 ,各自求 size ,假如要删除 df1 中的
2.df3=df1.merge(df2, on='size', how='left', suffix=('_1', '_2')),然后 df3 去掉'fullpath_2'为 nan 的行
3.再 df3 用 fullpath_1/fullpath_2 求 crc32 或其他 hash ,再根据这个 hash 在匹配一次

如果所有文件之前已经 hash 过,有保留数据,可以直接第 3 步,on=['size', hash]就行
还有其他以此扩展的思路(匹配的不止是文件 hash ,而是图像内容),就不细说了
图片去重我每天都在做,但不是 file hash ,file hash 我反而懒得搞,扔给 clonspy 完成
dcsuibian
29 天前
用 zfs 文件系统,开启去重,这样只占一份的空间。甚至不是文件级而是块级。
avenger
29 天前
Eagle 有去重功能,看是不是适合你
NoOneNoBody
29 天前
@276562578 #6
有的,面板 1|2(就是你的第一条需求),文件新 | 旧、字节数大 | 小、文件名长 | 短 8 种方式自动删除
276562578
29 天前
@dcsuibian 需要的不是去重哦,而是删掉多余的备份,并不是为了减少空间占用
Cu635
28 天前
@276562578 #5
那就是 dupegure 的“图片”模式,这样它对图片文件就是看图像内容判断一致性的,忽略图片格式(扩展名等)、分辨率等。

你在主楼里面说的 2,说是“文件名一致,但文件内容不一致”,我还以为是完全不一样呢。不过 dupegure 的“普通”模式就是要求完全一样了。

不过这个跟“文件名”就没有任何关系了,“文件名”是个干扰项。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1139923

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX