シンボリックリンク

Windows

シンボリックリンクやハードリンクといえば、昔はUNIX系の話で出てくる用語だったと思うが、Windows 8 ぐらい? から Windowsでも 使えるようになってる。

今回、Winodwsで初めて使ったので覚書。

機能の簡単な比較

ジャンクション

対象:
同一パーテイション内のオブジェクトへのリンク
同一PC内のほかのパーテイション内オブジェクトへのリンク

権限:
リンクを作成する場所のフォルダのアクセス権があれば一般ユーザーで作成可能

パスの記録方法:
絶対パス

親ディレクトリ:
リンク元の親ディレクトリ

その他:
存在しないファイルへのリンクも可能

シンボリックリンク

対象:
同一パーテイション内のオブジェクトへのリンク
同一PC内のほかのパーテイション内オブジェクトへのリンク
ネットワーク共有フォルダへのリンク

権限:
リンクを作成する場所のフォルダのアクセス権 および 管理者権限が作成に必要

パスの記録方法:
絶対パス および 相対パス

親ディレクトリ:
リンク先の親ディレクトリ

その他:
存在しないファイルへのリンクも可能

ハードリンク

対象:
同一パーテイション内のオブジェクトへのリンク

権限:
リンクを作成する場所のフォルダのアクセス権があれば一般ユーザーで作成可能

パスの記録方法:
リンク先のオブジェクトへの直接リンク

親ディレクトリ:
リンク元の親ディレクトリ

その他:
存在しているファイルのみリンク可能
削除時など状況よって元データも削除されるので注意が必要

コマンド(mklink)

mklink [[/d] | [/h] | [/j]] <link> <target>

パラメーター説明
/dフォルダへのシンボリックリンクを作成。 規定はファイルのシンボリックリンク
/hハードリンクを作成
/jディレクトリジャンクションを作成
<link>作成されるシンボリックリンクの名前
<target>シンボリックリンクがリンクする元のファイル(フォルダ)を指定

仕様例

管理権限のコマンドプロンプトで

mklink  /d  c:\hogehoge  c:\Users\User1\Documents
c:\hogehoge  <<==>>  c:\Users\User1\Documents のリンボリック リンクが作成されました。

個人的には フォルダのシンボリックリンクしか使わないと思うので /d さえ覚えておけばOK
あと、unix系の ln コマンド と link と target の指定が逆なので 注意。 これ最初間違ってしまった(汗

外部リンク

learn.microsoft.com(mklink)
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/mklink

Curiosity is a Friend of Life(Windows のシンボリックリンクの作成方法と使用例)
https://libertytree-seek.com/technology/374/

コメント

タイトルとURLをコピーしました