ハードリンク生成 [重複]

ハードリンク生成 [重複]
$ ln fun fun-hard
$ ln fun dir1/fun-hard
$ ln fun dir2/fun-hard
$ ls -1
total 16
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir1
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir2
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard

したがって、ファイルfunにはfunの4つのインスタンスがあり、fun-hardリストの2番目のフィールドには両方とも4が含まれます。これは、現在のファイルに存在するハードリンクの数です。

drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir1
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir2

dir1とdir2に2つのファイルfun-hardインスタンスがあるのはなぜですか?単一のハードリンクがありませんか?楽しい - 難しい?

-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard

この4つの面白くて難しい例を詳しく説明できますか?なぜ再発するのですか?

次の場合、dir1とdir2に2つのハードリンクがあります。

-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard

...4つのハードリンクインスタンスがありますが、なぜdir1とdir2も4つのインスタンスではないのですか?

ベストアンサー1

最大ディレクトリには少なくとも2つのハードリンクがあります。通常3つ以上です。次の2つのコマンドを実行すると、3つのハードリンクがあり、fooもちろんすべてが同じinodeを持っていることがわかります(同じディレクトリへのリンクなので)。

$ mkdir -p foo/bar
$ ls -ldi foo foo/. foo/bar/..

ディレクトリは通常少なくとも次のハードリンク:

  • 自体(例foo:)
  • 独自のリンク(例foo/.:)
  • foo/bar/..たとえば、親ディレクトリである各子ディレクトリ(存在する場合)から自分へのリンクです。

ディレクトリ自体へのハードリンクはその内容から完全に独立しており、各ディレクトリ内の各ファイルのハードリンクの数とは完全に別々にカウントされます。

おすすめ記事