
Windowsファイルサーバでシンボリックリンクがどんな動きするのか見てみた。
Windowsにおいてシンボリックリンクの機能を使ったことがなかったので調べてみた。
シンボリックリンクとは何?
あるファイル/フォルダを存在させたまま、別の名前のファイル/フォルダ名でショートカットのようなリンクを作成する。
ショートカットの違いは?
ショートカットはファイルやフォルダを開くだけ。
シンボリックリンクは実行したOSのアプリケーションにも影響を及ぼす。
例えばアプリケーション上はC:\logフォルダにログを残しているが、実際にはシンボリックリンク先のD:\logにファイルが残される。こうしたログファイルの指定がアプリ上で変更できない時に使えると考える。
検証1:サーバ側で設定したシンボリックリンクはクライアントでどう見えるか
環境
サーバ:Windows Server 2019
クライアント:Windows 10 22H2
共有するフォルダ名「share1」
シンボリックリンク元
フォルダ:「share1\test1」
ファイル:「share1\test1\test1.txt」
ファイルの中身:test1と記載
シンボリックリンク先
フォルダ:「share1\test2」
想定
クライアントがシンボリックリンクを開くと無事開ける。
設定
サーバにログインし、管理者権限のコマンドプロンプトで以下のコマンドを実行する。
mklink (シンボリックリンク先) (シンボリックリンク元)
例
mklink /D D:\share1\test2 D:\share1\test1
※今回はフォルダ単位であるため、「/D」のオプションをつけた
検証
サーバから見たシンボリックリンク
「test2」ができてる

フォルダはtest2だけど、中身はtest1が入っている。

クライアントの共有フォルダから見たら、「test2」はあるが・・・
開いても反応なし

検証2:共有フォルダに対してシンボリックリンクはできるのか
環境
シンボリックリンク先
フォルダ:「\\サーバ名\share1\test3」
設定
サーバにログインし、管理者権限のコマンドプロンプトで以下のコマンドを実行する。
mklink /D \\サーバ名\share1\test3 \\サーバ名\share1\test1
できたが・・・。test3は開けない。

結論
シンボリックリンクはローカルでしか使えない。