Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

お願い

図が崩れるため、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
katsuo5
orangeinc
世界中の旅行をより豊かにより快適に
http://orangeinc.voyage/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした