シンボリックリンク
読み:シンボリックリンク
外語:symbolic link
ソフトリンク
の実現するための仕組みの一つ。
目次
概要
特徴
別名
ショートカット
ファイルサイズ
使用例
UNIX
Windows Vista以降
概要
UNIX
および互換環境では古くから実用化され、Windowsでも
Windows Vista
から対応した。
同様の目的に用いられる
ハードリンク
(あるいは単にリンク)が持つ、同一
ファイルシステム
内でしか使用できないという欠点を解決するために導入された。
具体的には、ファイルの中身にリンク先の
ポインター
となる情報(パス名、
ファイル名
)が入り、ディレクトリエントリにはシンボリックリンクであるという情報が書き込まれる。
特徴
別名
ハードリンクでは、ファイルにリンクされた名前は完全に平等で、どれか一つがそのファイルの本当の名前で他は別名、などということはない。
対してシンボリックリンクは、あくまで情報として他のファイルの名前を持つ特殊なファイルに過ぎない。
シンボリックリンクは参照するファイルの情報としてその名前しか保持していないため、実際にその参照名のファイルにアクセスしてみるまで、そのファイルの各種属性や、存在するか否かを知ることはできない。逆に言うと、存在しないファイルへのシンボリックリンクも作成することができる。またリンクを作成する機構が
アトミック
であることを利用して、ファイルロックにも使用されることがある。
シンボリックリンクは非常に便利ではあるが、場当たり的に使用すると混乱を招くので注意が必要である。
ショートカット
Windowsには
ショートカット
という機能が存在する。
しかしショートカットは単に宛先が書かれたファイルに過ぎないが、シンボリックリンクは宛先のファイルやディレクトリ(フォルダー)と同じ扱いをすることが可能である。
ファイルサイズ
ファイルには本当にパスしか書かれないため、ファイルサイズはパスの長さとなる。
但し、そのファイルサイズのファイルが、実際にファイルシステム上のデータブロックにあるとは限らない。なぜなら、
ext2
ファイルシステムなどでは高速シンボリックリンク(fast symbolic link)と呼ばれるものが実装されているからである。
この技術では、リンク先の名前はデータブロックではなく、inode自身に格納される。当然、inodeの容量は限られているため、あまりにも長い名前のリンクは高速シンボリックリンクでは実装できない。高速シンボリックリンクのリンク先の名前は、最大で60文字までである。
格納できない長さであればデータブロックを使うが、さもなくば使わない。実際にデータブロックを消費しているかどうかは、duコマンドなどで確認できる。
使用例
UNIX
一般的な用法は次の通り。
ln -s 本名 別名
例えば、"/dev/ttyS0" に "/dev/modem" という別名を付けるには、"ln -s /dev/ttyS0 /dev/modem" とする。
変更するする場合、削除して作りなおさなくても、変更することが可能である。ファイルでもディレクトリでも可能なオプションとして、-nfs と覚えておくと良い。
ln -nfs 本名 別名
Windows Vista以降
一般的な用法は次の通り。UNIXのlnと引数が逆なので注意が必要である。
ln ファイル別名 ファイル本名
ln /d ディレクトリ別名 ディレクトリ本名
ショートカットと違い、ディレクトリ(フォルダー)のシンボリックリンクを作れば、それがあたかもディレクトリ(フォルダー)のように振る舞う。
不要になったら、ファイルやディレクトリ(フォルダー)を消す一般的な操作で削除できる。シンボリックリンクを削除しても本体は消えない。
再検索