Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

Windowsのシンボリックリンク、作成とリンク先の更新

ひさしぶりにストレージを増設した。様々な経験を経てITの使い方が変化すると、ただ新しいストレージにデータを移動するだけでは解決できない制約も生じる。その典型例の一つが、古いパスでデータを参照する必要がある場合だ。

アプリケーションが参照する先を変えたくない、変えられない場合もあるだろうし、データの参照方法はそのままに、その背後にあるデータの配置だけを変えたい場合もあるだろう。いずれの場合にせよ、使えるのがシンボリックリンクだ。

この投稿では、その前提知識と、シンボリックリンクのつくり方、その更新方法を紹介する。

おさらい - ハードリンクとソフトリンク

有効範囲 リンク先 具体例
ハードリンク 単一ボリューム内 ファイルのみ
ソフトリンク1 単一ローカル環境 フォルダのみ ジャンクション
ソフトリンク2 ローカル
リモート
ファイル
フォルダ
エイリアス
ショートカット
シンボリックリンク
ハードリンク

ハードリンクは、ある一つのデータに対して複数のリンクを提供する。例えば、次のような場合に用いる。

  • 一つのファイルに対して、複数のパスを定義する。
  • あるコマンドに対して、複数の呼び出し方を定義する。

ハードリンクは単一ボリューム内でしか機能しない。ハードリンクも、それが対象とするファイルも、同一のボリューム内に存在する必要がある。

ソフトリンク - ジャンクションやシンボリックリンク
有効範囲 権限
ジャンクション 単一ローカル環境 ユーザー
シンボリックリンク ローカル
リモート
管理者

ソフトリンクも、ある一つのデータに対して複数のリンクを提供する。ジャンクションもシンボリックリンクもソフトリンクだが、それらは有効範囲と権限に違いがある。
ジャンクションはユーザー権限で利用できるのだが、その有効範囲は単一PC内に制限される。一方、シンボリックリンクはローカル、リモート環境に対応できるのだが、管理者権限を必要とする。

シンボリックリンクを作り、リンク先を変更する。

次の状況を仮定する。

古い場所 c:\old-path
新しい場所 d:\new-path
別の場所 d:\another-path

管理者は、データを古い場所から新しい場所へ移行する必要がある。しかしユーザーの参照方法を変更したくない。このようなとき、管理者はデータ移行後にシンボリックリンクを作る。

new-item -itemtype symboliclink -path c:\old-path -target d:\new-path

もし別の場所へデータ移行しなければならないとき、「force」オプションを指定して、シンボリックリンクのリンク先を更新(上書き)することもできる。

new-item -itemtype symboliclink -path c:\old-path -target d:\another-path -force