アスタリスク インフラTECH wiki

ハードリンクとシンボリックリンク

最終更新:

manba

- view
メンバー限定 登録/ログイン

【リンクとは】


リンク機能は、ファイルをコピーしたり移動したりせずに、
別のディレクトリにあるように扱うことができる機能です。

【ハードリンク】

■ハードリンクとは?

  • ハードリンクは、ファイルの実体を直接指し示して共有する。
  • ハードリンクを削除しても、元ファイルは削除されない。
  • ハードリンクはiノード番号を共有することで実現しているため、
別ファイルシステムには作成することができない。

※iノードって?

ファイルの所有者・サイズ・アクセス権限・作成日時・データ領域へのポインタ等
各種情報を記録するための領域を言う。

【リンクの作成】

■ハードリンク

ln リンク先(実体) リンクファイル


例)

# ln link link1
# ls -l test*
2787649 -rw-rw-r--  2 guest guest 0  6月 22 10:53 link
2787649 -rw-rw-r--  2 guest guest 0  6月 22 10:53 link1

ファイルはiノードにリンクします。
link、link1ともにiノードは同じです。



【シンボリックリンク】

■シンボリックリンクとは?

  • 元ファイルが保管されているパスを示す擬似的なファイルを作成する。
  • シンボリックリンクを消しても実体ファイルに影響はない。
  • 実体ファイルを消すとシンボリックリンクからのアクセスがエラーとなる。
  • シンボリックリンクは別ファイルシステム間で作成することができる。
またディレクトリのリンクを作成することもできる。


【リンクの作成】

■シンボリックリンク

ln -s リンク先(実体) リンクファイル

例)

# ln -s link1 link2
# ls -la
-rw-rw-r--  1 guest guest 0  6月 22 10:53 link1
lrwxrwxrwx  1 guest guest 5  6月 22 10:57 link2 -> link1


【リンクの確認】

アクセス権は "ls -l" コマンドで確認する。

例)

l rwxrwxrwx 1 usr grp

左端が'l'(小文字のL)ならばシンボリックリンクであることを示す。
パーミッションの右側の数字がリンクの数

よく使うのはどっち

  • シンボリックリンクはファイル実体のコピーを作る感じです。
シンボリックリンクが影で、実体は別に存在する。
また別ファイルシステム間で作成することができます。

  • ハードリンクはファイル実体(iノード)そのものを指すので、
実体が2つ(以上)できると思っていいです。
ただiノード番号を共有することで実現しているので、
別ファイルシステムには作成することができません。

2つの特徴を並べてみたところ
シンボリックリンクの方がオールマイティに使える事が分かる。

ハードリンクは日にちごとにディレクトリを作成し、
更新の無い同じファイルも管理したい場合などにメリットがある。
目安箱バナー