lnコマンドでシンボリックリンクとハードリンクを設定する

lnコマンドでシンボリックリンクとハードリンクを設定する

Linuxにてlnコマンドでリンクを設定する

今回はLinuxのlnコマンドに関するコマンドのお話です。
Windowsにてファイルのショートカットを作成する機能がありますが、linuxにもショートカットを作成する命令lnコマンドがあります。lnコマンドにはシンボリックリンクとハードリンクの2種類のリンクがあり、少し性質が異なるため違いを確認してみましょう。

Advertisement

lnコマンドによるリンクの設定

今回は実体のあるファイルとして「file01.txt」を用意します。「file01.txt」のシンボリックリンクとして「link01.txt」を作成して、「file01.txt」のハードリンクとして「link2.txt」を作成します。

作成するフォルダ構成図

(root)
 ┣ file01.txt 実体のファイル
 ┣ link01.txt シンボリックリンク(file01.txtのリンク)
 ┗ link02.txt ハードリンク(file01.txtのリンク)

 

シンボリックリンクの設定方法

ln -s (対象となるファイル名) (リンク名)

シンボリックリンクを作成するサンプル

 

ハードリンクの設定方法

ln (対象となるファイル名) (リンク名)
・ハードリンクはroot権限を持つユーザーでなければ作成できません。
・ハードリンクはリンク元と同じパーテーション内でしか作れません。

ハードリンクを作成するサンプル

 

シンボリックリンクとハードリンクの違い

上記のサンプルにあるファイルの先頭には数字があり、「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のフレームワークを使うとき、フレームワークの公開用フォルダをレンタルサーバーの指定するドキュメントルートとシンボリックリンクを設定しますと、フレームワークが提供するフォルダ構成を変更しなくても良くなります。
何かと便利な使い方があるため、シンボリックリンクとハードリンクを使ってみてください。

Advertisement

インフラカテゴリの最新記事