私はプログラミングの旅に出ようとしていますが、間違いなく失敗したり、Mac にマウスを投げたりすることになりますが、これは興味深い問題です。
ベースディレクトリからスキャンを開始し、各ファイルを再帰的にループダウンするアプリを構築したいと考えています。完全に重複するファイルが見つかった場合は、そのファイルを削除し、その場所にシンボリックリンクを作成します。基本的に貧乏人の重複排除。私の Mac にはたくさんの重複ファイルがあり、ディスク容量を解放する必要があるので、これは実際に私にとって本当の問題を解決します。
私が読んだことから、これは戦略です:
再帰的にループし、各ファイルのハッシュを生成します。ハッシュは非常に一意である必要があります。これが最初の問題です。どのハッシュを使用すればよいですか? この魔法のハッシュを介して各ファイルのバイナリ コンテンツ全体を実行するにはどうすればよいですか?
各ファイルのハッシュとフルパスをキー/値ストアに保存します。redis はその速度の点で非常に適していると思います。
キー/値ストアを反復処理し、重複するハッシュを見つけ、重複ファイルを削除し、シンボリック リンクを作成し、キー/値ストアの行にコピーとしてフラグを立てます。
したがって、私の質問は次のとおりです。
- 各ファイルにどのハッシュ アルゴリズムを使用すればよいですか? これはどのように行われますか?
- ノードは一般的にI / Oタイプのもので高速であるため、node.jsの使用を考えています。問題は、ノードが CPU を集中的に使用するものを吸い込むことです。そのため、ハッシュがボトルネックになる可能性があります。
- ここで私が見逃している他の落とし穴は何ですか?