スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Windows Vista/Windows Server 2008でシンボリック・リンクを作成する

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2008/02/22
対象OS
Windows Vista
Windows Serve 2008
Windows VistaやWindows Server 2008ではシンボリック・リンクを利用できる。
シンボリック・リンクを作成するにはmklinkコマンドを利用する。
エクスプローラでリンク先を表示させるには、[リンク先]という表示項目を追加する。

解説

 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]] リンク ターゲット

        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。

 mklinkの引数は、作成するリンク名と、リンク先のファイル/フォルダ名である。作成するリンクの種類によって、/Dや/H、/Jなどのオプションを指定する。オプション指定を省略すると、ファイルへのリンクの作成となる。

 なおシンボリック・リンクを作成するには、Windows Vista以降で新しく導入された「シンボリック リンクの作成」というユーザー権利が必要である(ユーザーの権利は[管理ツール]の[ローカル セキュリティ ポリシー]などで設定/確認できる)。デフォルトではAdministratorsグループにのみ、この権利が割り当てられている。

ファイルへのシンボリック・リンクを作成する

 ファイルに対するシンボリック・リンクを作成するには、mklinkコマンドに作成するリンク名とリンク先のファイル名を指定すればよい。

C:\Data>mklink mycmd.exe c:\Windows\System32\cmd.exe …cmd.exeに対するリンク
mycmd.exe <<===>> c:\Windows\System32\cmd.exe のシンボリック リンクが作成されました

C:\Data>mklink mytestfile.c \\server1\prj\Development1\test.c …リモートのサーバ上のファイルに対するリンクの作成
mytestfile.c <<===>> \\server1\prj\Development1\test.c のシンボリック リンクが作成されました

C:\Data>dir …作成した内容を確認してみる
ドライブ C のボリューム ラベルは WINDOWSVISTA です
ボリューム シリアル番号は FC73-1DF1 です

C:\Data のディレクトリ

2008/02/20  15:01    <DIR>          .
2008/02/20  15:01    <DIR>          ..
2008/02/20  14:58    <SYMLINK>      mycmd.exe [c:\Windows\System32\cmd.exe]
2008/02/20  15:01    <SYMLINK>      mytestfile.c [\\server1\prj\Development1\test.c]
               2 個のファイル                   0 バイト
               2 個のディレクトリ  11,546,685,440 バイトの空き領域

 ファイルに対するシンボリック・リンクには「<SYMLINK>」という属性が表示されている。また続く[]内に、リンク先のファイルのパスが表示されている(これはWindows Vista以降のコマンド・プロンプトにおける拡張機能)。ローカルのファイルだけでなく、リモートのファイル・サーバ上のファイルに対してもリンクを張ることができる。

フォルダへのシンボリック・リンクを作成する

 フォルダに対するシンボリック・リンクを作成するには、/dオプションを使用する。

C:\Data>mklink /d picfolder2 c:\Users\hiroy-u\Pictures …ローカルのフォルダへのリンク
picfolder2 <<===>> c:\Users\hiroy-u\Pictures のシンボリック リンクが作成されました

C:\Data>mklink /d newprj2  \\server1\prj\Development1 …リモートのフォルダへのリンク
newprj2 <<===>> \\server1\prj\Development1 のシンボリック リンクが作成されました

C:\Data>dir /ad …作成した内容を確認してみる
ドライブ C のボリューム ラベルは WINDOWSVISTA です
ボリューム シリアル番号は FC73-1DF1 です

C:\Data のディレクトリ

2008/02/20  15:10    <DIR>          .
2008/02/20  15:10    <DIR>          ..
2008/02/20  15:10    <SYMLINKD>     newprj2 [\\server1\prj\Development1]
2008/02/20  15:10    <SYMLINKD>     picfolder2 [c:\Users\hiroy-u\Pictures]
               0 個のファイル                   0 バイト
               4 個のディレクトリ  11,546,763,264 バイトの空き領域

 フォルダへのリンクの場合は「<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のシンボリック・リンクの代用にはならない。End of Article


この記事と関連性の高い別のWindows TIPS
ファイルへの別名を割り当てるハードリンクを作成する
ジャンクション機能を使ってフォルダをマウントする
ジャンクション機能を使ってディスク・ボリュームをマウントする
ちょっとしたウィンドウ操作に便利なショートカット・キー
これだけは覚えておきたい、コマンド・プロンプトの使い方
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)

- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -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つの職種”とは?


ソリューションFLASHPR