重复文件清理:按哈希找,别按文件名找
同一个文件被备份三遍、照片存了两个版本,体积翻倍。靠文件名查重不靠谱,得看内容。
NAS 用久了,重复文件是空间浪费的头号来源:手机备份了两次、下载的文件重命名后又存了一份、照片在不同目录各有一份。
按文件名查重不可靠,同一个文件可能名字不同,不同文件也可能同名。
查重的思路
- 先按大小分组:大小不同的肯定不是重复,直接排除;
- 再按部分哈希:读文件头尾各几 KB 算哈希,快速筛;
- 最后全文件哈希:确认是否完全一致。
大部分工具都是这个流程,效率比直接算全文件哈希高得多。
常见工具
fdupes(Linux 命令行):
fdupes -r /mnt/存储空间/照片
加 -d 进入交互模式删除,-N 保留第一个其余删除。
jdupes:fdupes 的改进版,更快。
rmlint:功能强,能生成脚本而不是直接删。
图形界面工具:飞牛如果有空间分析类的应用,也能做查重。
安全第一
查重工具最危险的地方是「批量删除」。原则:
- 先列出,不直接删:先看报告,确认哪些是重复的;
- 保留哪个要想清楚:名字更规范的、路径更合理的、修改时间更新的;
- 硬链接代替删除:有些工具支持把重复文件替换成硬链接,空间省了,文件都还在;
- 删之前有备份。
哪些地方最容易重复
- 手机相册备份多次(换了备份工具、换了目录);
- 下载目录和归档目录各一份;
- 影视文件既有 1080p 又有 4K,被当成重复(其实是不同版本);
- 文档的多个修订版;
- 从云盘拉下来的文件,本地又存了一份。
注意:文件系统层面的重复
如果用的是支持去重的文件系统(比如某些 btrfs 配置),可能已经做了块级去重,文件大小看着正常,实际只占一份。
命令行查重看到的是逻辑大小,要看实际占用:
du -sh --apparent-size 目录
du -sh 目录
两个数差很多,说明有去重或压缩在起作用。
清理之后
- 更新一下媒体库(删掉的可能是引用中的文件);
- 跑一次空间统计,确认释放了;
- 把规则记下来,下次备份别再制造重复。
小结
查重的关键是按内容判断,按大小预筛,别信文件名。
删除永远人工确认,工具只负责把候选列出来。
留言