[System Environment] | |||||||||||
Windows Vista/Windows Server 2008でシンボリック・リンクを作成する
|
|||||||||||
|
解説 |
TIPS「ファイルへの別名を割り当てるハードリンクを作成する」では、ハードリンクを作成する方法を紹介した。Windows OSのハードリンクは、Windows 2000といった従来のOSで利用できる反面、同一ボリューム上に存在するファイルにしかリンクが張れないという制約があった。フォルダへのリンクは張れないし、ほかのサーバやほかのボリューム上に存在するファイルへリンクを張ることもできない。
TIPS「ジャンクション機能を使ってディスク・ボリュームをマウントする」では、NTFSのジャンクション(リパース・ポイント)機能を使ってボリュームやフォルダをマウントする機能を紹介したが、やはり別のサーバ上のボリュームや共有フォルダなどへリンクを張ることはできない。
これらに対し、Windows VistaやWindows Server 2008では、より柔軟性の高い「シンボリック・リンク」機能(「ソフト・リンク」ともいう)がサポートされている。これはUNIXやLinuxなどで使用されているシンボリック・リンクとほぼ同等の機能を持っている。ローカルのファイルやフォルダはもちろん、リモートのサーバ上の共有フォルダやファイルに対してもリンクを張ることができる。ただし、リンクする先がファイルかフォルダかによって、リンクの作成方法に少し異なる。本TIPSでは、Windows VistaやWindows Server 2008におけるシンボリック・リンクの作成方法について解説する。
なお、シンボリック・リンクの機能をまとめておくと次のようになる。
-
シンボリック・リンクとは、リンク先を指すためのいわばショートカットである。リンク先は、ローカルのファイルやフォルダに限らず、リモートのサーバ(共有フォルダ)中のファイルやフォルダでもよい。ただしジャンクション(リパース・ポイント)のように、ボリュームへリンクすることはできない。
-
ファイルやフォルダにシンボリック・リンクを張ると、通常のファイルやフォルダのように内容を確認したり、移動先として利用できる。ただしコマンドによっては(特に従来のOS上のコマンドなど)、リンクを正しく解釈できないことがあるので注意(例えばlink.txtがシンボリック・リンクの場合、「more < link.txt」は動作するがなぜか「more link.txt」は動作しない)。
-
シンボリック・リンクはWindows VistaやWindows Server 2008で利用できる。ただしNTFSボリュームが必要。
-
存在しないファイルやフォルダ名へのシンボリック・リンクを作成してもよい。シンボリック・リンクはオープン時(実際に使用されるとき)に解釈されるため、リンクの作成時にリンク先が存在しているかどうかは関係ない。実際にアクセスされるときにリンク先があればよい。
-
リンク先のファイルやフォルダが常に存在している必要はない。リンク先のファイルやフォルダを削除すると、アクセス先が不明なリンクとしてそのまま残り、そのようなリンクを開こうとするとエラーになる(ハードリンクの場合は、最後のリンクがなくなった時点で、ファイルの実体が削除される)。
-
リンク先は絶対パスでなく、相対パスでもよい(例:「..\..\master.doc」へのリンクなど)。ただし相対パスを持つリンクを移動させると、リンク先が不明になることがあるので注意。
操作方法 |
mklink.exeコマンドでシンボリック・リンクを作成する
Windows VistaやWindows Server 2008でシンボリック・リンクを作成するには、まず管理者権限のあるコマンド・プロンプトを開き(TIPS「Windows Vistaでプログラムを管理者モードで実行する」参照)、mklink.exeコマンドを実行する。
C:\>mklink …使い方を表示させる |
mklinkの引数は、作成するリンク名と、リンク先のファイル/フォルダ名である。作成するリンクの種類によって、/Dや/H、/Jなどのオプションを指定する。オプション指定を省略すると、ファイルへのリンクの作成となる。
なおシンボリック・リンクを作成するには、Windows Vista以降で新しく導入された「シンボリック リンクの作成」というユーザー権利が必要である(ユーザーの権利は[管理ツール]の[ローカル セキュリティ ポリシー]などで設定/確認できる)。デフォルトではAdministratorsグループにのみ、この権利が割り当てられている。
ファイルへのシンボリック・リンクを作成する
ファイルに対するシンボリック・リンクを作成するには、mklinkコマンドに作成するリンク名とリンク先のファイル名を指定すればよい。
C:\Data>mklink mycmd.exe c:\Windows\System32\cmd.exe …cmd.exeに対するリンク |
ファイルに対するシンボリック・リンクには「<SYMLINK>」という属性が表示されている。また続く[]内に、リンク先のファイルのパスが表示されている(これはWindows Vista以降のコマンド・プロンプトにおける拡張機能)。ローカルのファイルだけでなく、リモートのファイル・サーバ上のファイルに対してもリンクを張ることができる。
フォルダへのシンボリック・リンクを作成する
フォルダに対するシンボリック・リンクを作成するには、/dオプションを使用する。
C:\Data>mklink /d picfolder2 c:\Users\hiroy-u\Pictures …ローカルのフォルダへのリンク |
フォルダへのリンクの場合は「<SYMLINKD>」という属性が表示される。フォルダに対し、間違ってファイルのへのリンクを作成すると(/dオプションを付け忘れると)、例えばcdコマンドがエラーになり、カレント・フォルダを変更できない。
シンボリック・リンクの削除
シンボリック・リンクは通常のファイルやフォルダと同じなので、例えばエクスプローラ上で削除操作を行うと、そのリンクが削除される(リンク先が削除されるわけではない)。コマンド・プロンプト上で作業する場合は、ファイルへのリンクの削除ならdelコマンド、フォルダへのリンクの削除ならrdである(フォルダへのリンクをdelで削除しようとすると、そのフォルダの中のファイルが削除されてしまうので注意)。
エクスプローラにおけるリンク先の表示
シンボリック・リンクなどのリンク先をエクスプローラで確認するには、[リンク先]という表示項目を新しく追加する必要がある。エクスプローラの項目名のバーを右クリックしてポップアップ・メニューから[その他]を選択するか、[表示]メニューの[詳細表示の設定]を選択し、[詳細表示の設定]ダイアログで[リンク先]というチェック・ボックスをオンにする。すると次のように、リンク先の情報が表示される。
SFUによるシンボリック・リンクのサポート
SFU(Microsoft Windows Services for UNIX)は、Windows OS上でUNIX互換環境を実現するシステムであるが、これに含まれるlnコマンドを使えばシンボリック・リンクを作成できる(SFUについてはTIPS「UNIX互換環境を実現するSFUを利用する」参照)。例えば「ln -s test.c newfile.c」とすれば、既存のtest.cファイルに対して、newfile.cという名前のシンボリック・リンクを作成できる(引数の順番はmklinkコマンドとは逆)。SFUはWindows 2000やWindows XPなどでも動作するため、 これでも十分と思うかもしれない。
だがSFUのln -sコマンドで作成されるシンボリック・リンクは、SFU環境内でのみ利用可能な独自の機能である(実際には、システム属性が付けられたファイル内に、リンク先の名前文字列をUnicode文字列で書き込んでいるだけ)。エクスプローラやコマンド・プロンプト、SFU以外の通常のWindowsアプリケーションなどからは見えないので、Windows VistaやWindows Server 2008のシンボリック・リンクの代用にはならない。
|
「Windows TIPS」 |
- Windows TIPS (2008/12/19)
− レジストリ・エディタでよく参照するキーを素早く開く
− Windows Server 2008で無線LANを利用する
− Hyper-Vの仮想マシンへのショートカットを作成する - 第153話 残業削減 (2008/12/16)
世は未曽有の大不況。国は雇用を守れというが…。とりあえずは残業削減だ。おい部長、何か有効な手だてはないか! - Windows TIPS (2008/12/12)
− ダウンロードしたファイルを開かずに保存させる
− レジストリ・キーの最終更新日時を調べる
− bcdeditでブートOSメニューを変更する - Windows XP簡単ディスク・ダイエット術 (2008/12/11)
Windows XPの不要なファイルを削除してスリム化を実現。簡単な11種類の手法を紹介する。ディスク容量に制限のあるミニノートPCユーザー必読
|
|
スポンサーからのお知らせ
- - PR -
お勧め求人情報
**先週の人気講座ランキング**
〜データベース編〜
◆ | New! 「高可用性」のレベルは千差万別!? “最適な”高可用性システムを導入 |
◆ | New! “社会人大学院って、実際どうなの?” 現役学生が本音で語る「社会人大学の魅力」 |
◆ | New! “スーパーユーザーの反乱”に備えて、 技術者はどのような対策を施せるか? |
◆ | New! 小型センサーで不正なPCを“検知&遮断” 容易な導入・運用を実現する3つの特徴は |
◆ | 「仮想化環境」を1カ月単位でレンタル!? 初期コストを大幅に下げるサービスとは? |
◆ | 半分以上が使われていない? 利用効率を 高める“ストレージ仮想化”のメリットは |
◆ | 「セキュリティソフト=重い」は昔の話? @IT編集部の3人が実際に体験してみた |
◆ | ファルコンストア会長兼CEOに訊く―― 事業継続を考える企業にとって必要なこと |
◆ | 一通り眺めて「同意する」をクリック、に 潜むワナ……知れば“得”する対処法は? |
◆ | 「物理サーバと同じ手法でいいの?」 “仮想化”に適したバックアップとは? |
◆ | 変化するセキュリティリスクに対応した 情報漏えい対策の方法とは? |
◆ | 凄腕プロジェクトマネージャがチェックする リスクマネジメントで重要な5つのポイント |
◆ | 米・国防総省(ペンタゴン)も採用! 最上級のセキュリティをカンタン導入する |
◆ | 次期OSへの鍵!Windows Vistaのご提案 今Vista導入を検討すべき3つの理由とは! |
◆ | 「スーパープログラマ」になるための資質 〜エンジニア・キャリア進化論(第13回)〜 |
◆ | 「“監視ツール”だけで安心ですか?」 高可用性を追求した“クラスタ構築”とは |
◆ | コストをかけずに迅速復旧!! 事業継続性を高める為の“3つの要素”? |
◆ | ビジネスは、小さく生んで大きく育てたい そんな願いを叶えてくれるサーバって? |
◆ | 「週末だけリソースが増やせればなぁ…」 が実現するクラウドホスティング |
◆ | SaaS、クラウドコンピューティング時代 必要となるITインフラの要件とは!? |
◆ | 導入事例を通してSDKの実績を検証しよう これがワザあり開発ツールの“技”だ!! |
◆ | 従来の職種が、SOAによって大きく変わる! SOA時代、新たに生まれる“6つの職種”とは? |