Windows ハードリンクがスペースを占有していますか?

Windows ハードリンクがスペースを占有していますか?

私のコンピュータではハードリンクを作成します

mklink /h git-link.exe git.exe
Hardlink created for git-link.exe <<===>> git.exe

今では両方ともスペースを占有している

2012-04-17  12:14 AM         6,905,039 git-link.exe
2012-04-17  12:14 AM         6,905,039 git.exe

これのポイントは何ですか? 単にコピーを作らないのはなぜですか?

答え1

ハードリンクを作成すると、ディスク上の同じ物理データを指す 2 つの別個のファイル システム エントリが作成されます。

dir を実行すると、ファイル システム エントリが指している場所に保存されているデータのサイズが表示されます。

したがって、1 つのファイルに 100 個のハード リンクを作成すると、それらはすべて同じサイズを報告します。つまり、保存されているデータのサイズを報告します。これは、ハードリンクがこのスペースを占有することを意味するのではなく、実際にはそうではありません。ハード リンクはごくわずかなスペースしか占有しません。

答え2

ドキュメンテーションMicrosoft が提供しているものが役に立つかもしれません。(Windows Server 2003 用ですが、NTFS ファイル システムを使用するすべてのシステムで同じであると思います。)

ハードリンクの場合:

Windowsエクスプローラーとコマンドプロンプトでは、リンクされたファイルはすべて同じデータを共有しているにもかかわらず、同じサイズとして表示されます。実際にはその量のディスク容量を使用しない

Windows エクスプローラーと dir /s コマンドは、再解析ポイントに従い、宛先ボリューム上のファイルとフォルダーをカウントし、それらをホスト ボリュームの統計に含めます。これにより、ホスト ボリュームで実際に使用されているよりも多くのスペースが使用されていると誤解される可能性があります。

chkdsk 出力、NTBackup GUI またはバックアップ ログ、およびディスク クォータの表示を使用して、ボリューム上のディスク領域がどのように使用されているかを確認できます。ただし、Windows エクスプローラーと dir コマンドをこの目的で使用する場合、いくつかの制限と欠点があります。

答え3

実際のところ、ディレクトリのハード リンク (ジャンクション) を使用する意味はまったくありません。

つまり、エクスプローラーによる処理方法を考慮すると、そうです。

例を挙げて私の言いたいことは、ディスク「C」の物理ペイロードを軽減する(appdata フォルダまたはプログラム ファイルを別のディスク「E」に移動し、ハードリンクを使用して「C」を再読み込みして、アプリの動作を維持する)ことは期待できないということです。Windows エクスプローラーは、それらのリンクの「サイズ」を「C」の(おそらく)消費された領域に蓄積し続け、ハードリンクの「仮想」領域消費に関係する場合でも、ディスク「C」に空き領域がなくなるとすぐにユーザーに警告を表示します。

それで、Windows 7 のハード リンクはどうでしょうか? 非常に残念です。

関連情報