Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
196
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@katsuo5

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

お願い

図が崩れるため、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
196
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
196
Help us understand the problem. What is going on with this article?