この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
目次
Linuxにてlnコマンドでリンクを設定する
今回はLinuxのlnコマンドに関するコマンドのお話です。
Windowsにてファイルのショートカットを作成する機能がありますが、linuxにもショートカットを作成する命令lnコマンドがあります。lnコマンドにはシンボリックリンクとハードリンクの2種類のリンクがあり、少し性質が異なるため違いを確認してみましょう。
lnコマンドによるリンクの設定
今回は実体のあるファイルとして「file01.txt」を用意します。「file01.txt」のシンボリックリンクとして「link01.txt」を作成して、「file01.txt」のハードリンクとして「link2.txt」を作成します。
作成するフォルダ構成図
┣ file01.txt 実体のファイル
┣ link01.txt シンボリックリンク(file01.txtのリンク)
┗ link02.txt ハードリンク(file01.txtのリンク)
シンボリックリンクの設定方法
シンボリックリンクを作成するサンプル
1 2 3 4 5 6 7 |
root@hostname:# ln -s file01.txt link01.txt root@hostname:# ls -li total 12 drwxr-xr-x 2 root root 4096 Sep 22 01:42 . drwxr-xr-x 5 ubuntu ubuntu 4096 Sep 22 01:41 .. 274934 -rw-r--r-- 1 root root 11 Sep 22 01:42 file01.txt 274935 lrwxrwxrwx 1 root root 10 Sep 22 01:42 link01.txt -> file01.txt |
ハードリンクの設定方法
・ハードリンクはリンク元と同じパーテーション内でしか作れません。
ハードリンクを作成するサンプル
1 2 3 4 5 6 7 8 |
root@hostname:# ln file01.txt link02.txt root@hostname:# ls -li total 16 drwxr-xr-x 2 root root 4096 Sep 22 01:42 . drwxr-xr-x 5 ubuntu ubuntu 4096 Sep 22 01:41 .. 274934 -rw-r--r-- 2 root root 11 Sep 22 01:42 file01.txt 274935 lrwxrwxrwx 1 root root 10 Sep 22 01:42 link01.txt -> file01.txt 274934 -rw-r--r-- 2 root root 11 Sep 22 01:42 link02.txt |
シンボリックリンクとハードリンクの違い
上記のサンプルにあるファイルの先頭には数字があり、「file01.txt」と「link02.txt」は 274934 で、「link01.txt」は 274935 です。この数字はinode(アイノード)といい、簡単に言えばデータの格納している場所を指し示します。
ハードリンクである「file01.txt」と「link02.txt」は同じinode(アイノード)を指し示しているため、ファイル名が違うが同じものです。例えるなら「file01.txt」は本名で「link02.txt」はあだ名のようなものです。
シンボリックリンクである「file01.txt」と「link01.txt」は別のinode(アイノード)を指し示しているため、全く別のファイルです。シンボリックリンクはWindowsやMacのショートカットと同じ機能であると考えると分かり易いと思います。
さいごに
シンボリックリンクの使い方を把握していると便利なときがあります。
例えばレンタルサーバーでPHPやRubyのフレームワークを使うとき、フレームワークの公開用フォルダをレンタルサーバーの指定するドキュメントルートとシンボリックリンクを設定しますと、フレームワークが提供するフォルダ構成を変更しなくても良くなります。
何かと便利な使い方があるため、シンボリックリンクとハードリンクを使ってみてください。