하드 링크 생성 [중복]

하드 링크 생성 [중복]
$ 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 목록의 두 번째 필드에는 둘 다 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

최대디렉토리에는 최소한 두 개의 하드 링크가 있습니다. 일반적으로 세 개 이상입니다. 다음 두 명령을 실행하면 세 개의 하드 링크가 있고 foo물론 모두 동일한 inode를 가지고 있음을 알 수 있습니다(동일한 디렉터리에 대한 링크이므로).

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

디렉토리는 일반적으로적어도다음 하드 링크:

  • 자체(예 foo: )
  • 자체 링크(예 foo/.: )
  • foo/bar/..예를 들어 상위 디렉터리인 각 하위 디렉터리(있는 경우)에서 자신에 대한 링크입니다.

디렉토리 자체에 대한 하드 링크는 해당 내용과 완전히 독립적이며 각 디렉토리의 각 파일에 대한 하드 링크 수와 완전히 별도로 계산됩니다.

답변2

lsinode 번호와 디렉터리 트리를 표시하는 더 많은 옵션을 사용하면 시각화하기가 더 쉬울 수 있습니다.

$ ls -l --inode --recursive
.:
total 16
6299664 drwxrwxr-x 2 paul paul 4096 Jan 24 10:42 dir1
6299832 drwxrwxr-x 2 paul paul 4096 Jan 24 10:42 dir2
6299812 -rw-rw-r-- 4 paul paul 1970 Jan 24 10:41 fun
6299812 -rw-rw-r-- 4 paul paul 1970 Jan 24 10:41 fun-hard

./dir1:
total 4
6299812 -rw-rw-r-- 4 paul paul 1970 Jan 24 10:41 fun-hard

./dir2:
total 4
6299812 -rw-rw-r-- 4 paul paul 1970 Jan 24 10:41 fun-hard
$ 

표시된 4개 항목은 6299812서로 다른 디렉터리 항목으로, 모두 동일한 inode와 해당 데이터 블록을 참조합니다. 하나의 수정 시간과 다른 내용의 수정 시간을 변경하면 네 가지 내용이 모두 변경됩니다. 이러한 내용의 복사본은 하나만 있습니다. 특히, 어느 것이 '오리지널'인지에 대한 개념은 없습니다.모두예.

inode는 하드 링크 수를 보유하므로 파일 관리자는 링크 수가 0에 도달하는 시점을 알 수 있으며, 이 시점에서 데이터에 액세스할 수 없게 되고 다시 여유 공간으로 해제될 수 있습니다. 그러나 인덱스 노드는 이러한 링크의 출처를 기록하지 않습니다. 반면에 디렉터리에는 직계 상위 항목에 대한 링크가 있습니다.

관련 정보