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

##お願い
図が崩れるため、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
```
*<strong>iノード番号が同じ</strong>になっているのが確認できます(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
```