하드링크와 복사된 파일의 차이점은 무엇인가요?

하드링크와 복사된 파일의 차이점은 무엇인가요?

제가 이해한 바에 따르면 하드 링크에는 원본 파일의 복사본이 포함되어 있으며 한 위치에서 하드 링크된 파일을 삭제해도 다른 위치에는 계속 존재할 수 있습니다.

그렇다면 왜 하드 링크를 사용하겠습니까? 왜 두 개의 별도 파일을 가지지 않습니까?

답변1

파일을 복사하면 내용도 복사됩니다. 따라서 단일 파일의 내용을 수정해도 다른 파일에는 영향을 미치지 않습니다.

하드 링크를 생성하면 동일한 콘텐츠를 가리키는 파일이 생성됩니다. 따라서 파일 중 하나의 내용을 변경하면 두 파일 모두 변경 사항이 표시됩니다.

답변2

하드 링크는 기본적으로 동일한 파일에 대한 두 번째 파일 이름입니다. 따라서 파일을 하드 링크하면 파일 시스템에 한 번만 존재하므로 공간을 한 번만 차지합니다. 따라서 디스크 공간을 절약하려면 다음을 사용해야 합니다.

답변3

UNIX 파일 시스템에서 각 파일 이름은 실제로 디스크의 데이터 위치(inode라고 함)에 대한 하드 링크입니다. 기존 파일에 대한 새로운 하드 링크를 생성하는 경우 이는 동일한 데이터에 대한 또 다른 포인터일 뿐이므로 디스크의 추가 공간을 차지하지 않습니다. 하나 이상의 링크를 통해 데이터를 편집하거나 inode를 직접 편집하면 두 파일이 모두 변경됩니다.

시스템은 각 인덱스 노드에 대한 하드 링크 수를 추적합니다. 링크 수가 0에 도달하면 파일에 더 이상 액세스할 수 없으며 데이터는 안전한 것으로 표시되어 덮어쓸 수 있습니다. 따라서 2개의 하드 링크가 있는 파일의 경우 링크 중 하나가 삭제되면 데이터가 삭제되지 않습니다. 둘 다 삭제해야만 데이터가 사라집니다.

-i명령의 스위치를 사용하여 파일의 inode 번호를 볼 수 있습니다 ls.

반면, 소프트 링크는 파일 이름을 통해 다른 파일을 가리킵니다. 원본 파일을 이동하거나 삭제하면 링크가 깨집니다.

답변4

"왜 하드 링크를 사용해야 합니까?"라는 질문의 섹션을 참조하면 다음과 같습니다.

하드 링크 파일(또는 소프트(기호) 링크 파일)은 단일 실행 파일을 다양한 목적으로 위장하는 유용한 방법을 제공합니다.

그건이름실행에 사용할 수 있는 옵션을 결정하기 위해 코드가 어떻게 호출되는지 검사할 수 있습니다. 이를 통해 약간 다른 목적에 필요한 모든 공유 기능을 포함하는 대규모 코드 조각을 개발하고 패키징할 수 있습니다. 사용자의 관점에서 볼 때 "컨텐츠"(이름별) 실행 사양은 선택 및 표시를 보다 관리하기 쉬운 옵션 하위 집합으로 제한합니다.

대표적인 예가 LVM이다. 역사적으로 HP-UX는 다양한 실행 파일에 대해 하드 링크 파일(예 vgdisplay: vgcreate, , vgextend등)을 사용했습니다. 오늘날 Linux에서와 마찬가지로 이러한 명령은 실제로 실행 파일에 대한 기호(소프트) 링크입니다 lvm.

관련 정보