我即将踏上编程之旅,这无疑会以失败和/或将鼠标扔到我的 Mac 上而告终,但这是一个有趣的问题。
我想构建一个应用程序,它从某个基本目录开始扫描并递归地遍历每个文件,如果它找到一个完全重复的文件,它将删除它,并在其位置创建一个符号链接。基本上穷人重复数据删除。这实际上为我解决了一个真正的问题,因为我的 Mac 上有一堆重复文件,我需要释放磁盘空间。
根据我的阅读,这是策略:
递归循环,并为每个文件生成一个哈希。哈希需要非常独特。这是第一个问题。我应该使用什么哈希?如何通过这个神奇的哈希运行每个文件的整个二进制内容?
将每个文件的哈希和完整路径存储在键/值存储中。我认为 redis 非常适合它的速度。
遍历键/值存储,查找重复哈希,删除重复文件,创建符号链接,并将键/值存储中的行标记为副本。
因此,我的问题是:
- 我应该为每个文件使用什么哈希算法?这是怎么做到的?
- 我正在考虑使用 node.js,因为 node 通常在 i/o 类型的东西上速度很快。问题是节点吸收了 CPU 密集型的东西,所以散列可能是瓶颈。
- 我在这里还缺少什么其他问题?