ハード リンクとジャンクション
NTFS ファイル システムでは、ハード リンク、ジャンクション、シンボリック リンクの 3 種類のファイル リンクがサポートされています。 この記事では、ハード リンクとジャンクションの概要について説明します。 シンボリック・リンクの詳細については、 シンボリック・リンクの作成を参照してください。
ハード リンク
ハード リンクは、複数のパスが同じボリューム内の 1 つのファイルを参照するファイルのファイル システム表現です。 ハード リンクを作成するには、 CreateHardLinkA 関数を使用します。
ハードリンクされたファイルに加えられた変更は、そのファイルを参照するリンクを介してアクセスするアプリケーションに即座に表示されます。 ファイルの属性は、そのファイルへのすべてのハード リンクに反映され、そのファイルの属性への変更はすべてのハード リンクに反映されます。 ただし、ファイルのディレクトリ エントリのサイズと属性の情報は 表示されます 変更が行われたリンクでのみ更新されます。 たとえば、特定のハード リンクの読み取り専用属性フラグをクリアして、そのハード リンクを削除でき、ファイルへのハード リンクが複数ある場合、他のハード リンクには読み取り専用属性がまだ設定されていると表示されます。これは true ではありません。 ファイルを読み取り専用の状態に戻すには、残りのハード リンクのいずれかからファイルに読み取り専用フラグを設定する必要があります。
たとえば、 C:
と D:
がローカル ドライブであり、 Z:
が \\fred\share
にマップされたネットワーク ドライブであるシステムでは、ハード リンクとして次の参照が許可されます。
C:\dira\ethel.txt
リンク先C:\dirb\dirc\lucy.txt
D:\dir1\tinker.txt
リンク先D:\dir2\dirx\bell.txt
C:\diry\bob.bak
リンク先C:\dir2\mina.txt
これは、すべてのリンクが同じボリューム上のファイルであるためです。 ハード リンクでは、ディレクトリを参照することも、ファイルのみを参照することも、異なるボリューム上のファイルを参照することもできません。
次の参照は許可されていません。
C:\dira
リンク先C:\dirb
C:\dira\ethel.txt
リンク先D:\dirb\lucy.txt
C:\dira\ethel.txt
リンク先Z:\dirb\lucy.txt
ハード リンクを削除するには、 DeleteFileA 関数を使用します。 ハード リンクは、作成された順序に関係なく、任意の順序で削除できます。
接合
接続 (soft リンクとも呼ばれます) は、参照するストレージ オブジェクトが個別のディレクトリであるという点でハード リンクとは異なります。 ジャンクションは、同じコンピューター上の異なるローカル ボリュームにあるディレクトリをリンクすることもできます。 それ以外の場合、ジャンクションはハード リンクと同じように動作します。 ジャンクションは、 再解析ポイントによって実装されます。
[ハード リンク] セクションで同じ条件を想定すると、次の参照がジャンクションとして許可されます。
C:\dira
リンク先C:\dirb\dirc
C:\dirx
リンク先D:\diry
次の参照は、マップされたネットワーク ボリュームを参照するか、ファイルを直接参照するため、許可されません。
C:\dira\one.txt
リンク先C:\dirb\two.txt
C:\dir1
リンク先Z:\dir2