[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コマンドでシンボリック・リンクを作成する
Windows VistaやWindows Server 2008でシンボリック・リンクを作成するには、まず管理者権限のあるコマンド・プロンプトを開き(TIPS「Windows Vistaでプログラムを管理者モードで実行する」参照)、mklinkコマンドを実行する(これはコマンド・プロンプトの内部コマンド)。
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)
- ファイルへの別名を割り当てるハードリンクを作成する(TIPS)
- Windowsでリモートサーバ上のシンボリックリンクを有効にする(TIPS)
- Windowsでジャンクション機能を使ってフォルダをマウントする(TIPS)
- ジャンクション機能を使ってディスク・ボリュームをマウントする(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
更新履歴 | |
|
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|