297
233

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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
297
233
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
297
233

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?