여기에는 많은 정답이 있지만 아무도 원래의 오해를 실제로 해결했다고 생각하지 않습니다. 원래의 질문은 기본적으로 "심볼릭 링크를 만들면 나중에 쉽게 식별 할 수 있습니다. 그러나 하드 링크를 식별하는 방법을 알 수 없습니다." 그렇습니다. 대답은 기본적으로 "당신은 할 수 없습니다"로 요약되며 그 이유를 설명 할 수는 있지만 아무도 혼란스럽고 이상하다고 인정한 사람은 없습니다.
이 모든 것을 읽고 있고 무슨 일이 일어나고 있는지 알아 낸다면 좋습니다. 내 작은 글을 읽을 필요가 없습니다. 여전히 혼란 스러우면 계속 진행하십시오.
정말 짧은 대답은 하드 링크는 실제로 링크가 아니라 상징적 링크가 아니라는 것입니다. 디렉토리 구조에서 새 디렉토리는 원래 디렉토리 항목과 동일한 바이트 수를 가리키며 일단 생성하면 첫 번째 항목과 마찬가지로 '실제'이며 합법적입니다. 드라이브의 모든 '일반'파일에는 하나 이상의 하드 링크가 있습니다. 그없이, 당신은 그것을 볼 것입니다 어떤디렉토리를 참조하거나 참조 할 수 없습니다. 따라서 Fred.txt 파일이 있고 Wilma.txt와 Barney.txt를 하드 링크로 연결하면 세 이름 (및 디렉토리 항목)이 모두 동일한 파일을 참조하며 모두 동일하게 유효합니다. 텍스트 편집기에서 "저장"을 눌렀을 때 항목 중 하나가 생성되었고 "ln"명령으로 다른 항목이 작성되었다는 것을 OS가 알 수있는 방법은 없습니다.
그러나 OS 는 동일한 파일을 가리키는 다른 항목 수를 추적해야합니다. Wilma.txt를 삭제하면 드라이브의 여유 공간을 확보하지 않아도됩니다. 그러나 Fred.txt ( '원본'파일)를 삭제하면 Fred.txt로 알려진 드라이브의 데이터도 여전히 Barney.txt이기 때문에 드라이브의 공간을 확보하지 않아도됩니다. 모든 디렉토리 항목 을 삭제 하는 경우에만 OS가 데이터 자체가 차지하고 있던 공간을 할당 해제합니다.
Barney.txt이 심볼릭 링크 있었다면, 다음 Fred.txt은 삭제 할 공간을 할당 해제했고, Barney.txt 이제 깨진 링크가 될 것입니다. 또한 심볼릭 링크가 가리키는 파일을 이동하거나 이름을 바꾸면 링크가 끊어집니다. 그러나 파일 / 데이터를 가리키는 다른 디렉토리 항목을 손상시키지 않고 원하는대로 하드 링크 된 파일을 이동하거나 이름을 바꿀 수 있습니다. 모든 파일은 드라이브에서 동일한 데이터 블록을 참조하는 디렉토리 항목이기 때문입니다. 해당 데이터의 inode 번호).
[그것은 2 년 후, 그리고 마지막 비트 혼란 나를 잠깐, 그래서 내가 분명히 것 같아요. "mv ./Wilma.txt ../elsewhere/Betty.txt"를 입력하면 파일을 옮기는 것처럼 보이지만 실제로는 그렇지 않습니다. 실제로하고있는 것은 현재 디렉토리의 디렉토리 목록에서 'Wilma.txt'라는 이름이 inode ######를 사용하여 찾을 수있는 데이터와 연결되어있는 광고 항목을 제거하는 것입니다. #, "및 'Betty.txt'라는 이름이 inode #######"를 통해 찾을 수있는 데이터와 연결되어있는 디렉토리 ../elsewhere의 디렉토리 목록에 새 광고 항목 추가 그렇기 때문에 동일한 드라이브의 다른 위치로 이동하는 한 2 기가 바이트 파일만큼 2 기가 바이트 파일을 '이동'할 수 있습니다.]
OS가 동일한 데이터 덩어리를 가리키는 얼마나 많은 다른 디렉토리 항목을 추적 할 수 있기 때문에, 당신은 할 수 있습니다 특정 파일이 하드에 연결되어있는 경우, 확실히 말할 수는 없지만, 이야기 디렉토리 항목이 만약 당신이 '보고있는 것은'원본 '입니다. 한 가지 방법은 "ls"명령, 특히 "ls -l"입니다 (대시 뒤에 소문자 L 임)
이전 예를 빌리려면 ...
-rw-r--r-- 3 stephane stephane 0 Nov 12 19:55 f1
첫 번째 문자는 대시이므로 디렉토리 나 다른 이국적인 것이 아니며 '일반적인'일반 파일입니다. 그러나 실제로 평범한 경우, rwx-ish 부분 다음의 숫자는 "1"이됩니다. "이 데이터 블록을 가리키는 디렉토리 항목이 하나 있습니다." 그러나 이것은 하드 링크 시연의 일부이므로 "3"으로 표시됩니다.
이것은 이상하고 신비한 행동으로 이어질 수 있습니다 (하드 링크에 머리를 감지 않은 경우). 텍스트 편집기에서 Fred.txt를 열고 약간 변경하면 Wilma.txt와 Barney.txt에서도 동일하게 변경됩니까? 아마도. 아마. 텍스트 편집기에서 원본 파일을 열고 변경 내용을 기록하여 변경 내용을 저장하면 세 이름이 모두 동일한 (새로 변경된) 텍스트를 가리 킵니다. 그러나 텍스트 편집기가 새 파일 (Fred-new-temp.txt)을 작성하고 변경된 버전을 해당 파일에 쓴 다음 Fred.txt를 삭제 한 다음 Fred-new-temp.txt의 이름을 Fred.txt로 바꾸면 Wilma와 Barney는 변경된 새 버전이 아닌 원래 버전을 계속 가리 킵니다. 하드 링크를 이해하지 못하면 약간 화가 날 수 있습니다. :) [좋아요, 저는 개인적으로 아무것도 몰라요새 파일 / 이름 바꾸기 작업을 수행하는 텍스트 편집기 를 사용하지만 정확하게 수행하는 다른 프로그램은 많이 알고 있으므로주의하십시오.]
마지막 참고 사항 : 'fsck'(파일 시스템 검사)가 확인하는 것 중 하나는 드라이브에 데이터가 더 이상 디렉토리 항목에 의해 참조되지 않는 데이터 블록이 있는지 여부입니다. 때때로 문제가 발생하여 inode를 가리키는 유일한 디렉토리 항목이 삭제되지만 드라이브 공간 자체는 "사용 가능"으로 표시되지 않습니다. 따라서 fsck의 작업 중 하나는 할당되지 않은 모든 공간을 모든 디렉토리 항목과 일치시켜 참조되지 않은 파일이 없는지 확인하는 것입니다. 일부를 찾으면 새 디렉토리 항목을 작성하여 "lost + found"에 넣습니다.