rm myFile
하드 링크를 수행하면 myFile
어떻게 되나요 ?
답변1
Unix에서는 모든 일반 파일이 하드 링크입니다. Unix(및 대부분의 (모두?)) 파일 시스템의 하드 링크는 참조 카운터라고 합니다 inode
. inode
파일에 대한 "링크"가 있는 경우(일반적인 작업 방법) 카운터는 1입니다. 두 번째, 세 번째, 네 번째 등의 링크를 생성하면 카운터는 매번 1분 1초씩 시간을 증가(증가)시킵니다. 링크를 삭제( )하면 rm
카운터가 1 감소합니다. 링크 카운터가 0에 도달하면 파일 시스템은 해당 inode
공간을 삭제하고 해당 공간을 사용 가능한 것으로 표시합니다.
즉, 마지막 링크를 삭제하지 않는 한 파일은 그대로 유지됩니다.
Edit:
파일은 남습니다마지막 링크가 삭제되어도. 이는 파일에 포함된 데이터가 안전하고 다른 프로세스에서 액세스할 수 없도록 하는 방법 중 하나입니다. 데이터의 메타데이터에 제공된 연결이 0이고 어떤 프로세스에서도 사용되지 않는 경우에만 데이터가 파일 시스템에서 완전히 삭제됩니다.
이것IMHO, 이것은 하드 링크(그리고 소프트 링크와 어떻게 다른지)를 이해하는 가장 쉬운 방법입니다.
답변2
테스트는 생각보다 쉬웠습니다. 텍스트 파일을 만든 다음 하드링크했습니다. 하드 링크를 제거하면 작동합니다아니요하드 링크된 파일은 삭제되고 링크된 파일은 원래 위치에 유지됩니다.
답변3
디스크의 모든 파일은 실제로 드라이브의 실제 데이터에 대한 포인터입니다.
파일에 대한 하드 링크를 생성하면 하드 링크 파일은 원본 파일이 가리키는 것과 동일한 데이터를 가리킵니다.
이 예에서 보듯이 a.txt는 드라이브에 있는 파일의 데이터(바이트)를 가리키며, 하드 링크 b.txt가 생성되면 a.txt가 가리키는 것을 가리키게 됩니다.
따라서 서로 분리되어 있기 때문에 하나를 제거해도 다른 하나에는 영향을 미치지 않습니다.
그러나 이를 삭제하면 시스템은 디스크의 데이터에 이를 가리키는 파일이 없는 것을 확인하므로 시스템은 이를 여유 공간으로 취급하고 필요한 경우 덮어씁니다.