プロジェクト

全般

プロフィール

ジャンクションとシンボリックリンク

概要

Linuxのシンボリックリンクのように、ファイルやディレクトリを別なファイルやディレクトリを参照する仕組みです。
ショートカットと似ていますが、ショートカットはファイルを読むアプリケーションがショートカットを認識してその先を参照する必要があります。
一方、ジャンクション、シンボリックリンクはショートカットに対応していないアプリケーションにも適用できます1

1 一部ジャンクション・ショートカットを認識しないアプリケーションがあるかもしれません

ジャンクション

NTFSのリバースポイント機能と呼ばれる、ディレクトリを別なディレクトリにリダイレクトする機能です。
例)D:\work\arc\westディレクトリを指すジャンクション C:\data\westディレクトリ

ローカルマシン上のファイルシステムが対象で、ネットワークドライブ等の共有ドライブへのジャンクションを生成することはできません。
作成にあたり、管理者権限を必要としません。
ディレクトリのリダイレクトなのでファイルをリンクすることはできません。
リダイレクト先は絶対パスで生成されるので、リダイレクト先とジャンクションのディレクトリを含むディレクトリを移動させると、相対パスが変わらなくても絶対パスが変わるため、リンクが破綻します。

シンボリックリンク

リンクを生成する機能で、ファイルまたはディレクトリをリンク先として指定できます。相対パスを指定すると相対パスでリンク先が設定されます。
ローカルマシン上のファイルシステムに加えてネットワークドライブのファイルやディレクトリをリンク先として指定できます。
作成には管理者権限が必要となります。

比較

方式 ファイルのリンク 管理者権限 外部ドライブを参照
シンボリックリンク 不可 必要 不可
ジャンクション 不要

作成方法

mklinkコマンドでシンボリックリンクやジャンクションの作成を行います。

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

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

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

ジャンクション

C:\data> mklink /j west d:\work\arc\west
west <<===>> D:\work\arc\west のジャンクションが作成されました

C:\data dir
  :
2024/03/18  15:03    <JUNCTION>     west [d:\work\arc\west]

シンボリックリンク

管理者権限でコマンドプロンプト(ターミナル)を起動して実行します。

C:\data> mklink /d west d:\work\arc\west
west <<===>> D:\work\arc\west のシンボリック リンクが作成されました

C:\data> dir
  :
2024/03/18  15:03    <SYMLINKD>     west [d:\work\arc\west]

削除方法

ジャンクション、およびディレクトリへのシンボリックリンクを削除するときは、rmdirコマンドで削除します。
ファイルへのシンボリックリンクを削除するときは、delコマンドで削除します。

表示

dirコマンドで、ジャンクションおよびシンボリックリンクのみを表示させるには、/AL (L: 再解析ポイント)オプションを指定します。

C:\data> dir /AL
2024/03/18  15:03    <SYMLINKD>     west [d:\work\arc\west]


約1ヶ月前に更新