리눅스에서 하드 링크는 무엇입니까?


9

나는 주변을 검색하고 하드 링크와 기호 링크 (소프트 링크)의 차이점을 이해하려고 노력하고 있습니다.

이 링크 가 매우 유용하다는 것을 알았습니다 . 그러나 나는 여전히 명확하지 않습니다. 소프트 링크는 원본 파일의 사본이 아니지만 하드 링크는 사본인지 이해합니다.

답변:


15

메일 전달의 비유를 사용하기 위해 심볼릭 링크는 전달 주소와 유사합니다. 심볼릭 링크를 열려고 할 때 저장된 "파일"(말 그대로 파일이 아님)을 열어서 확인합니다. 대신 다른 이름을 가진 파일을 찾아 다른 파일을 대신여십시오.

하드 링크는 같은 장소에 두 개의 주소를 갖는 것과 비슷합니다. (물론 이것은 실제 세계에서는 실제로 불가능합니다). 어떤 파일 이름 (주소)을 읽으려고하면 동일한 실제 파일 (위치)을 얻습니다.

따라서 파일은 한 번만 저장되지만 여러 이름으로 저장되므로 하드 링크는 복사본이 아닙니다. 그러나 두 파일 이름에서 동일한 정보에 액세스 할 수 있기 때문에 사본과 매우 유사하게 작동합니다.


아주 좋은 유추를 위해 +1합니다.이 문제를 해결하려고 할 때 나를 단순화 시켰습니다.
John Gardeniers

1
+1이지만 두 가지 사소한 세부 사항 : 1) 현실에서는 같은 장소에 대해 여러 주소를 가질 수 있지만 일반적이지 않습니다. 당신이있는 경우 2) 아마도 하드 링크 및 사본 사이의 가장 중요한 차이점은 즉, /foo/bar변경 /foo도 변경됩니다 /bar만약 그들이있는 거 하드 링크 (같은 파일들이있는 거 두 개의 이름), 그러나 때문에하지가 있다면 사본 (두 개의 완전히 독립적 인 파일이기 때문에).
Dave Sherohman 2016 년


3

하드 링크를 만들면 동일한 파일이 서로 다른 두 곳에 나타납니다. 파일은 실제로 디스크의 데이터 블록 세트에 대한 참조 일 뿐이므로 하드 링크는 다른 참조를 추가합니다. 파일이 실제로 삭제되는 경우는 거의 없습니다. 참조는 방금 제거되었으므로 데이터에 액세스 할 수 없습니다. 그래서 하드 링크로 만든 파일을 삭제하면 다른 원본 파일은 그대로 유지되며 그 반대도 마찬가지입니다.

반면에 심볼릭 링크는 특정 이름을 가진 파일에 액세스하는 방향입니다. 모든 프로그램에 "이 파일을 사용하려면 끝났습니다"라고 알려줍니다. 따라서 심볼릭 링크의 대상을 삭제하면 심볼릭 링크가 끊어집니다. 링크를 삭제해도 대상은 영향을받지 않습니다.


2

* nix 시스템의 파일에는 두 부분이 있습니다. 하나는 데이터 부분이고 다른 하나는 inode입니다. inode는 메타 (HDD에 저장된 위치와 같은 데이터와 관련된 정보) 정보를 저장합니다. 하드 링크는이 inode의 정확한 사본을 만듭니다. sym 링크는 실제 inode의 inode를 가리키는 inode를 만듭니다. 따라서 하드 링크의 inode 데이터는 대상과 동일하지만 sym 링크의 데이터는 다릅니다. 간단히 말해서 sym 링크와 하드 링크는 파일 데이터가 아닌 inode 데이터의 내용에 따라 다릅니다. 이것은 sym link와 hard link의 차이점에 대한 나의 이해입니다. 나는 이것이 더 개발자 일이고 나는 개발자가 아니기 때문에 처음에 이것을 이해하는 데 어려움을 겪었습니다. 아는 사람, 내가 틀렸다면 정정하십시오.


3
* nix의 "디렉토리"는 파일 이름 및 inode 번호 목록입니다. 하드 링크는 동일한 inode 번호를 가진 두 개의 디렉토리 항목이므로 inode의 사본이 아니라 정확히 동일한 inode를 참조합니다. 심볼릭 링크는 특정 inode가 아닌 다른 디렉토리 항목 (이름)을 가리키는 디렉토리 항목입니다. (실제로는 아이 노드가 있지만 그 아이 노드는 파일 데이터가 아닌 디렉토리 엔트리를 의미한다.)
랜디 오리 슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.