하드 링크와 복사 된 파일의 차이점은 무엇입니까?


22

하드 링크에는 원본 파일의 사본이 포함되어 있으며 한 디렉토리에서 하드 링크 된 파일을 삭제할 수 있으며 다른 디렉토리에도 여전히 존재한다는 것을 알고 있습니다.

그렇다면 왜 하드 링크를 사용하고 싶습니까? 왜 두 개의 별도 파일이 없습니까?

답변:


29

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

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


3
매우 큰 파일의 경우 원본 파일을 복사하는 것보다 항상 하드 링크를 빠르게 작성합니까?
Jorge Bucaran

14

하드 링크는 기본적으로 동일한 파일의 두 번째 파일 이름입니다. 따라서 파일을 하드 링크로 연결하면 파일 시스템에 파일이 한 번만 저장되므로 공간을 한 번만 차지합니다. 디스크 공간을 절약하려면이 옵션을 사용하십시오


4
신속한 답변 감사합니다. 그렇다면 왜 소프트 링크 대신 하드 링크를 사용하고 싶습니까?
Mike B

5
소프트 링크는 기본적으로 다른 파일에 대한 포인터입니다. 따라서 원본 파일을 삭제해도 소프트 링크는 여전히 존재하지만 끊어집니다. 하드 링크는 동일한 파일에 대해 2 개의 이름이므로 개별적으로 삭제할 수 있습니다.
Peter

19
Peter의 설명은 좋지만 "링크 수"는 제외되었습니다. 파일의 inode (디스크 메타 데이터)에는 링크 수가 있습니다. 하드 링크는 링크 수를 늘리고 소프트 링크는 증가하지 않습니다. 링크 카운트가 0으로 떨어지면 커널은 파일 내용을 삭제할 수 있습니다.
Bruce Ediger

4
이것에 대한 Alan의 대답은 중요한 점이 있다고 생각합니다. 파일을 변경하면 하드 링크의 모든 내용이 변경되고 사본은 다른 내용을 갖습니다.
donothingsuccessfully

6

유닉스 파일 시스템에서 모든 파일 이름은 실제로 디스크의 데이터 위치 (아이 노드)에 대한 하드 링크입니다. 기존 파일에 대한 새 하드 링크를 만들면 동일한 데이터를 가리키는 또 다른 포인터이므로 디스크에 추가 공간이 필요하지 않습니다. 하나 또는 다른 링크로 데이터를 편집하거나 inode를 직접 편집하면 두 파일이 모두 변경됩니다.

시스템은 각 inode의 하드 링크 수를 계산합니다. 링크 카운트가 0이면 파일에 더 이상 도달 할 수 없으며 데이터를 덮어 쓸 수있는 것으로 표시됩니다. 따라서 두 개의 하드 링크가있는 파일이 주어지면 두 링크 중 하나를 삭제하면 데이터가 삭제되지 않습니다. 둘 다 삭제하면 데이터가 사라집니다.

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

반면에 소프트 링크는 파일 이름으로 다른 파일을 가리 킵니다. 원본 파일을 이동하거나 삭제하면 링크가 끊어집니다.


0

"왜 하드 링크를 사용하고 싶습니까?"라는 질문의 일부를 참조하십시오.

하드 링크 된 파일 (또는 그 문제에 대한 소프트 (기호) 링크 된 파일은 다른 목적으로 가장 할 수있는 단일 실행 파일을 갖는 유용한 방법을 제공합니다.

즉, 코드가 호출되는 이름 을 검사하여 실행할 수있는 옵션을 판별 할 수 있습니다. 이를 통해 약간 다른 목적에 필요한 모든 공유 기능을 갖춘 하나의 큰 코드 조각을 개발하고 패키징 할 수 있습니다. 사용자의 관점에서 볼 때 "이름"에 따라 "무엇을"실행할 것인지는 선택과 표현을보다 관리하기 쉬운 옵션의 하위 집합으로 제한합니다.

전형적인 예는 LVM입니다. 한 번에 HP-UX는 다양한 실행 파일에 대한 하드 링크 된 파일을 (사용 예 vgdisplay, vgcreate, vgextend, 등 오늘, 리눅스처럼,이 명령은 실제로 심볼릭 (소프트) 링크입니다 lvm실행.


이것은 질문과 관련이 없습니다.
rjmunro

1
@rjmunro 나는 달라달라고 간청한다. OP는 "왜 하드 링크를 사용하고 싶습니까?"라고 물었습니다.
JR 페르 구손

마지막 예를 이해하지 못합니다. 일단 많은 실행 파일에 대한 하드 링크가 있었지만 이제는 하나의 실행 파일에 대한 소프트 링크가 있습니다. 이 소프트 링크는 어떻게 구별됩니까?
엠마누엘 버그

@EmanuelBerg 필자의 요점은 하드 링크 또는 소프트 링크의 사용 여부에 관계없이 실행에 유효한 옵션과 인수를 결정하는 실행 파일의 이름입니다.
JRFerguson

1
@EmanuelBerg TMTOWTDI
JRFerguson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.