シンボリックリンク

「シンボリックリンク」とは、ある領域(フォルダやボリューム)を別の領域と繋ぐ処理を言う。
Windowsでは「ショートカット」などを利用している方も多い、「シンボリックリンク」はこれに似ているが、「ショートカット」はショートカット先に飛ぶ様に出来ている。
対して「シンボリックリンク」は“飛ぶ”のではなく“そこ”にあるように扱う。

実際のメリットとして、あるソフトの保存データが蓄積されるフォルダがあるとする。
このフォルダがストレージを圧迫してきているがソフト側に保存場所を変更する設定が無い場合、別ストレージにそのフォルダを移動し、移動先から元の場所に「シンボリックリンク」を設定する。
これによってはソフトは、さもそこに保存データがあるかの様に認識し通常通り読み書きを行う。

「ショートカット」ではなぜダメなのか?
「ショートカット」は基本的にファイルとなるため、アイコンはフォルダだったとしても、階層の認識としてはフォルダではなくファイルがそこにある状態となる。
「A」フォルダ内の「B」フォルダを繋ぎたいと考えた場合のディレクトリを参考にしてみる。

「シンボリックリンク」:[ /A/B ](普通のディレクトリ構造)
「ショートカット」  :[ /A/B.lnk ](ファイルなので拡張子もついている)

この様に階層が変わるため、これでは整合性は取れない。


「mklink」(WindowsVista以降)
この操作はWindowsでは珍しく「コマンド」を使う。
まずはコマンドプロンプトを起動する。
楽な方法として「スタート」>「アクセサリ」>「コマンド プロンプト」を右クリックし「管理者として実行」をクリック

ショートカットの場合、[Windowsキー]+[R]を押し、以下の画面を起動する。
ファイル名を指定して実行
以下のどちらかを行う。

  1. cmdと入力し[Ctrl]+[Shift]を押しながら[Enter]キーを押し、次のアカウント制御画面で「はい」をクリック。
  2. runas /user:administrator “cmd.exe”と入力し[Enter]キーを押す。

黒い画面に以下のような一行が出れば起動した事になる。

 C:\Windows\System32>

コマンドは以下の方法で記述する。

 C:\>mklink <オプション> <リンク作成場所> <リンクしたい場所>

オプションについては以下の指定となる。

「/D」
ディレクトリのシンボリックリンクを作成

ファイルのシンボリックリンクを作成する場合はオプション無指定でよい。

「<リンク作成場所>」についての注意事項だが、作成するのがフォルダの場合、そのフォルダ自体がシンボリックリンクとなる。
例えば「C:\FolderA」を「D:\FolderA」へとシンボリックリンクを張る場合、「D:\」内に「FolderA」はない状態とする必要がある。
その上で以下のコマンドを打つ。

 C:\>mklink /D D:\FolderA C:\FolderA

「D:\」内に「FolderA」は存在しないが、コマンドを実行した後に「D:\」内に「FolderA」が表示される事となる。


実例を兼ねて処理を行う。
最近多いのはApple社の「iTunes」である。
iPhoneの登場以降、パソコンにバックアップを取る機能があるが、数十GBの容量を消費する割には保存先の変更が出来ない。
まずは準備。

  1. ある程度安定した速度のストレージを準備(この場合D:とする)
  2. 移し先に”C:\ユーザー\<ユーザー名>\AppData\Roaming\Apple Computer”にある「MobileSync」というフォルダをコピーする。(この場合D:\MobileSync)
  3. コピーが終わったら念の為コピー元の「MobileSync」を「MobileSync.org」とでもリネイムする。
  4. コマンドプロンプトから以下のコマンドを実行。
     C:\>mklink /D “C:\ユーザー\<ユーザー名>\AppData\Roaming\Apple Computer\MobileSync” D:\MobileSync
  5. C:\ユーザー\<ユーザー名>\AppData\Roaming\Apple Computer\MobileSyncを開いて中身(D:\MobileSyncの中が表示される)がちゃんとあれば「MobileSync.org」を削除して完了。

以上。


コマンドの一文を「””」で囲んでいる理由は、「Apple Computer」というフォルダ名にスペースが含まれているためである。
空白がなければ問題がないが、書式に則って行うと、”空白”の次は <リンクしたい場所> となるので上手くいかない。
そのための「””」で囲んでいる。


「linkd」(WindowsXP)
WindowsXPの場合、標準でシンボリックリンクを作る機能が搭載されていない。
そこで兄弟OS、Windows2003のツールからその機能を手動でインストールする。

まず「Windows Server 2003 Resource Kit Tools」をダウンロードする。

気にならない人はこのままインストールしても構わないが、細かいゴミ(特に目に見える物でもないので気にならないと言えば、気にならない)が嫌な方は、以下の方法をお勧めする。

1.Winrarダウンロードしインストールする。
(Windows用良質圧縮解凍ソフト、数多くの圧縮形式を解凍でき、ZIPや高圧縮率RARに圧縮可能)
2.ダウンロードした「rktools.exe」を右クリックし「WinRARで開く」をクリック
3.一覧内にある「rktools.msi」を右クリックし「ファイルを表示」をクリック
4.一覧内に「linkd.exe」を「C:\WINDOWS\system32」内にドラッグ&ドロップする。
6.すべて閉じてインストール完了。

後は上記の内容に習ってコマンドを実行してみる。

 C:\>linkd “C:\Documents and Settings\<ユーザー名>\Application Data\Apple Computer\MobileSync” D:\MobileSync

リンク元のディレクトリ構成が変わっているのはWindowsXPならでの構成のためである。

以上。