锦方的个人网页 · 如果有一天你突然想起了我


重复文件清理工具最危险的不是漏扫,而是误删

目录

最近我在做Find Duplicate Files,一个macOS上的重复文件和相似照片清理工具。

一开始我觉得这个软件的流程很简单,选择文件夹、扫描重复文件、选中多余的文件再删除就可以了。

真正做下去之后发现,扫描速度和能找出多少重复文件都不是最危险的问题,最危险的是误删。

重复文件少找到几个,最多只是少清理一点空间。如果把唯一的一份文件删掉,可能就没有办法恢复了。

重复文件和相似照片不是一回事

完全重复的文件可以比较大小和文件内容,最后用完整哈希确认。两个文件的完整哈希一样,才可以认为内容相同。

相似照片不一样。两张照片看起来接近,可能是一张原图和一张压缩图,也可能是连拍、裁剪、调色或不同分辨率的版本。

它们有可能是多余的,也有可能都需要保留。

所以相似照片只能作为整理建议,不能因为系统把它们放在一组里,就自动认定其中一张应该删除。

只扫描用户选择的位置

Find Duplicate Files不会自己扫描整台电脑,文件夹扫描只访问用户主动选择的目录。

照片图库也只用于只读扫描,不能直接在里面执行清理。

我觉得这个范围很重要。清理工具不应该因为获得了文件权限,就默认可以检查和修改所有位置。

用户选了什么目录,软件就只处理什么目录。

扫描结果必须可以复核

扫描完成后不能直接出现一个“一键全部删除”。用户应该先看到每组文件的名称、路径、大小和准备保留的文件。

有时候两个文件内容一样,但位置代表的意义不一样。例如一个在项目资料里,一个在临时下载目录里。即使可以删除其中一份,也应该由用户决定保留哪一份。

真正执行前还要再显示一次准备处理的文件和占用空间,取消按钮应该比确认按钮更容易找到。

多一次确认看起来比较麻烦,但清理文件本来就不适合追求操作次数最少。

删除前再检查一次

扫描结果不是永远有效的。

用户完成扫描后,文件可能被修改、移动或替换。如果软件继续按旧结果清理,就可能处理错误的文件。

所以在确认清理后,软件还要重新检查准备处理的文件。完全重复文件重新确认完整哈希,相似照片也要确认它们仍然符合当时的相似条件。

如果校验失败,就停止清理,让用户重新扫描。

我认为宁可让用户多等一次,也不能拿已经过期的扫描结果继续删除。

先移动,再考虑放进废纸篓

软件可以把选中的文件移到一个单独的隔离目录,用户确认其他软件和项目都没有受到影响后,再自己决定是否删除。

直接清理时也是移动到macOS废纸篓,不做无法恢复的永久删除。

隔离目录比较适合文件很多、自己也不能马上确认的情况。先放几天,再检查项目、照片和备份是否正常,比扫描结束后立即清空更稳妥。

历史记录也不能完全相信

Find Duplicate Files会保存扫描历史,方便以后查看之前的结果和空间变化。

但是历史记录保存的是当时的文件状态,不能因为它是软件自己生成的,就一直把它当成可信数据。

扫描快照保存时会记录SHA256。以后重新打开时再计算一次,如果内容和保存时不一样,就只允许查看,不允许选择文件和执行清理。

旧版本没有校验信息的历史记录也按不可信处理。

这样即使快照被修改、损坏或者来自旧版本,也不会直接变成一次可以执行的删除操作。

软件清理自己的记录也要限制范围

扫描历史数量多了以后,软件会清理旧快照。这里也有一个容易忽略的问题:历史记录里的路径如果被污染,会不会让软件删到其他位置?

所以删除旧快照前要同时确认:

只要有一项不符合,就不执行删除。

这个检查清理的只是软件自己的临时记录,但同样应该按照处理用户文件的标准来限制范围。

我的结论

重复文件清理工具不能只比较扫描速度、能找出多少文件和可以释放多少空间。

更重要的是它怎样证明这些文件可以处理、怎样让用户复核、扫描结果过期后会不会停止,以及出错时还能不能恢复。

我做Find Duplicate Files时会继续保持这个原则:可以少清理一些,也可以让操作多一步,但不能为了看起来方便,就把不确定的文件自动删除。

系列:note

该系列自动来自分类: note

  1. Gemini 3.6 Flash完美弥补了Codex 5.6
  2. macOS 外置硬盘为什么会出现 ._* 文件
  3. 小众工具软件应该免费、买断还是订阅
  4. 用iPhone和iPad维护Git静态网站可行吗
  5. 一个Mac截图工具,从能截图到能上架还差多远
  6. 重复文件清理工具最危险的不是漏扫,而是误删 (当前)
  7. 备份dokuwiki数据
  8. grep 命令
  9. zola的Front Matter完整字段的意思
  10. 从dokuwiki切换到quartz
  11. 安装immich记录
  12. 修改dokuwiki时区
  13. macos安装dokuwiki
  14. Debian创建新用户和设置防火墙
  15. mac在Debian安装wireguard和使用
  16. 再也不买不能解bl的手机了
  17. Firefox设置
  18. debian安装FFmpeg来合并youtube音频
  19. css 扩散列表
  20. 两个练习
  21. css RWD
  22. css 图片
  23. css 提示
  24. css 下拉
  25. css 表单
  26. css 导航栏
  27. css 单词
  28. HTML SVG
  29. HTML Canvas
  30. HTML input
  31. HTML 结构
  32. 电气施工图说明
  33. china uses dropbox
  34. Nginx installs SSL certificates
  35. debian install shadowsocks
  36. Visual studio code set the python environment
  37. install hexo

下一篇推荐

系列继续阅读

备份dokuwiki数据