ハード リンクとジャンクション

NTFS ファイル システムでは、ハード リンク、ジャンクション、シンボリック リンクの 3 種類のファイル リンクがサポートされています。 この記事では、ハード リンクとジャンクションの概要について説明します。 シンボリック リンクの詳細については、「シンボリック リンクを 作成する」を参照してください。

ハード リンクは、同じボリューム内の 1 つのファイルを複数のパスが参照するファイルのファイル システム表現です。 ハード リンクを作成するには、 CreateHardLinkA 関数を使用します。

ハードリンクされたファイルに加えられた変更は、そのファイルを参照するリンクを介してアクセスするアプリケーションに即座に表示されます。 ファイルの属性は、そのファイルへのすべてのハード リンクに反映され、そのファイルの属性に対する変更はすべてのハード リンクに反映されます。 ただし、ファイルのディレクトリ エントリのサイズと属性情報は、変更が行われたリンクでのみ 目に見えて 更新されます。 たとえば、特定のハード リンクの読み取り専用属性フラグをクリアして、そのハード リンクを削除でき、ファイルへのハード リンクが複数ある場合、他のハード リンクでは、読み取り専用属性がまだ設定されていることが表示されます。これは true ではありません。 ファイルを読み取り専用状態に戻すには、残りのハード リンクのいずれかからファイルに読み取り専用フラグを設定する必要があります。

たとえば、C: と D: がローカル ドライブで、Z: が \\fred\share にマップされたネットワーク ドライブであるシステムでは、ハード リンクとして次の参照が許可されます。

  • C:\dirb\dirc\lucy.txt にリンクC:\dira\ethel.txt
  • D:\dir2\dirx\bell.txt にリンクD:\dir1\tinker.txt
  • C:\dir2\mina.txtにリンクされた C:\diry\bob.bak

次の参照は許可されません。

  • C:\dirb にリンクされた C:\dira
  • D:\dirb\lucy.txt にリンクC:\dira\ethel.txt
  • Z:\dirb\lucy.txt にリンクC:\dira\ethel.txt

ハード リンクを削除するには、 DeleteFileA 関数を使用します。 ハード リンクは、作成された順序に関係なく、任意の順序で削除できます。

接合

ジャンクション (ソフト リンクとも呼ばれます) は、参照するストレージ オブジェクトが個別のディレクトリであるという点で、ハード リンクとは異なります。 ジャンクションは、同じコンピューター上の異なるローカル ボリュームにあるディレクトリをリンクすることもできます。 それ以外の場合、ジャンクションはハード リンクと同じように動作します。 ジャンクションは 、再解析ポイントを通じて実装されます。

[ハード リンク] セクションで同じ条件を想定すると、次の参照がジャンクションとして許可されます。

  • C:\dirb\dirc にリンクされた C:\dira
  • D:\diry にリンクされた C :\dirx

次の参照は許可されません。

  • C:\dirb\two.txt にリンクC:\dira\one.txt
  • Z:\dir2 にリンクされている C :\dir1

関連項目

シンボリック リンクの作成