LoginSignup
288
228

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-25

お願い

図が崩れるため、PCで見てください。

ディレクトリ

・所属するファイルのファイル名とiノードを記録するファイル

------directory------       -------iノード--------        ---------実体---------
|  -----file------  |       |  ---------------  |       |  ---------------  |
|  |  ファイル名    |  |       |  |     001     |  |       |  |     aaa     |  |
|  |     aaa     |===========> |             |===========> |             |  |
|  |  iノード番号   |  |       |  |             |  |       |  |             |  |
|  |     001     |  |       |  |             |  |       |  |             |  |
|  ---------------  |       |  ---------------  |       |  ---------------  |
|  -----file------  |       |  ---------------  |       |  ---------------  |
|  |  ファイル名    |  |       |  |     002     |  |       |  |     bbb     |  |
|  |     bbb     |===========> |             |===========> |             |  |
|  |  iノード番号   |  |       |  |             |  |       |  |             |  |
|  |     002     |  |       |  |             |  |       |  |             |  |
|  ---------------  |       |  ---------------  |       |  ---------------  |
---------------------       ---------------------       --------------------- 

iノード

・ファイルの属性を保存する場所
  -固有のiノード番号を持つ

------directory------       -------iノード--------        ---------実体---------
|  -----file------  |       |  ---------------  |       |  ---------------  |
|  |  ファイル名  |    |       |  |001           |  |       |  |     aaa     |  |
|  |     aaa   |===========>   |種類         |===========>  |             |  |
|  |  iノード番号 |    |       |  |サイズ        |  |        |  |             |  |
|  |     001     |  |       |  |アクセス権     |  |       |  |             |  |
|  |             |  |       |  |所有者        |  |       |  |             |  |
|  |             |  |       |  |所有グループ   |  |       |  |             |  |
|  |             |  |       |  |実体の保存場所 |  |       |  |              |  |
|  |             |  |       |  |             |  |       |  |              |  |
|  |             |  |       |  |             |  |       |  |              |  |
|  |             |  |       |  |             |  |       |  |              |  |
|  ---------------  |       |  ---------------  |       |  ---------------  |
---------------------       ---------------------       --------------------- 

ハードリンク

・元ファイル(実体)と同じiノードを指す
  -元ファイルを消去してもアクセスできる

------directory------       -------iノード--------        ---------実体---------
|  -----file------  |       |  ---------------  |       |  ---------------  |
|  |  ファイル名    |  |       |  |     001     |  |       |  |     aaa     |  |
|  |     aaa     |===========> |             |===========> |             |  |
|  |  iノード番号   |  |      ===>|             |  |       |  |             |  |
|  |     001     |  |     = |  |             |  |       |  |             |  |
|  ---------------  |   =   |  ---------------  |       |  ---------------  |
|  -----file------  | =     |                   |       |                   |
|  |  ファイル名    |  =       |                   |       |                   |
|  |     bbb     |=         |                   |       |                   |
|  |  iノード番号   |  |       |                   |       |                   |
|  |     001     |  |       |                   |       |                   |
|  ---------------  |       |                   |       |                   |
---------------------       ---------------------       --------------------- 

シンボリックリンク

・リンク元(実体)の場所を指す
  -ディレクトリ、別パーティションでも作成できる

       ------directory------       -------iノード--------      ---------実体---------
       |  -----file------  |       |  ---------------  |       |  ---------------  |
  =======>|  ファイル名    |  |       |  |     001     |  |       |  |     aaa     |  |
  ||   |  |     aaa     |===========> |             |===========> |             |  |
  ||   |  |  iノード番号   |  |       |  |             |  |       |  |             |  |
  ||   |  |     001     |  |       |  |             |  |       |  |             |  |
  ||   |  ---------------  |       |  ---------------  |       |  ---------------  |
  ||   |  -----file------  |       |  ---------------  |       |  ---------------  |
  ||   |  |  ファイル名    |  |       |  |     002     |  |       |  |リンク先のパス|  |
  ||   |  |     bbb     |===========> |             |===========> |             |  |
  ||   |  |  iノード番号   |  |       |  |             |  |       |  |     aaa     |  |
  ||   |  |     002     |  |       |  |             |  |       |  |             |  |
  ||   |  ---------------  |       |  ---------------  |       |  ---------------  |
  ||   ---------------------       ---------------------       ----------||--------- 
  ||                                                                     ||
  =========================================================================

まとめ

・ハードリンク
  -元ファイルと同一のiノードを指す
   <できないこと>
    ・ディレクリへの作成はできない
    ・別のファイルシステム(パーティション)への作成はできない
      -パーティションが割れると、iノードの場所も割れる

・シンボリックリンク
  -リンク元のポインタを指す
    ・リンク元のアクセス権が適用される
    ・シンボリックリンクがコピーすると、リンク元のファイルがコピーされる
      -cp -dでシンボリックリンクそのものをコピーする

lnコマンド

ハードリンク作成

sample.txtへのハードリンクsample_lnkを作成する

ln sample.txt sample_lnk

実行結果.
# ln sample.txt sample_lnk
# ls -li
total 0
25312947 -rw-r--r--  2 root  wheel  0 Aug 26 02:19 sample.txt
25312947 -rw-r--r--  2 root  wheel  0 Aug 26 02:19 sample_lnk

*iノード番号が同じになっているのが確認できます(25312947)

シンボリックリンク作成

sample.txtへのシンボリックリンクsample_lnkを作成する

ln -s sample.txt sample_lnk

実行結果.
# ln -s sample.txt sample_lnk
# ls -li
total 8
25312947 -rw-r--r--  1 root  wheel   0 Aug 26 02:19 sample.txt
25313030 lrwxr-xr-x  1 root  wheel  10 Aug 26 02:24 sample_lnk -> sample.txt
288
228
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
288
228