揮発性のメモ2

http://d.hatena.ne.jp/iww/

Windowsで、ジャンクション機能を使う

ジャンクションとは NTFSの機能で、フォルダに対するシンボリックリンクみたいな機能のこと。

NTFSでのシンボリックリンクは管理者権限が必要で面倒くさいので、ジャンクションを使う。
DOS窓から、mklinkコマンドで シンボリックリンクを張るようにジャンクションを作成する。

ショートカットと違い、ファイルのフルパスはジャンクションの下に見える。
エクスプローラで見たらショートカットの記号がついているが、どこへのジャンクションかはエクスプローラ上からは知りえない。dirコマンドの結果には出る。

ジャンクション作成後、再起動しても消えない。
エクスプローラから普通に削除できる。削除しても実体が消えることはない。
DOSから削除するときは rmdir を使う。(うっかりdelで消すと、配下のファイルが消えてしまい死ぬ)

実体が削除されてもジャンクションは残る。
なんなら実体が無い状態から先にジャンクションを張ることもできる
ただし、ジャンクションは同一ドライブ内にしか作成できない。(ドライブをまたげない)

C:\>mklink
シンボリック リンクを作成します。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。
C:\>mklink /J C:\include C:\cygwin64\usr\include
C:\include <<===>> C:\cygwin64\usr\include のジャンクションが作成されました

C:\>cd include

C:\include>
C:\>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 0C26-7C75 です

 C:\ のディレクトリ

2021/12/07  13:04    <DIR>          AMD
2024/01/05  16:33    <DIR>          cygwin64
2024/03/02  18:53    <JUNCTION>     include [C:\cygwin64\usr\include]
2024/01/05  13:12    <DIR>          Program Files
2024/01/05  14:13    <DIR>          Program Files (x86)
2022/09/22  01:15    <DIR>          Users
2024/02/15  01:37    <DIR>          Windows
               0 個のファイル                   0 バイト
               7 個のディレクトリ  408,138,149,888 バイトの空き領域