소프트 (기호) 링크와 하드 링크의 차이점은 무엇입니까?


59

Vista에서도 소프트 링크를 만들 수 있다고 들었 습니다 . 그렇다면 유닉스 / 리눅스 / 비스타에서 소프트 (기호) 링크와 하드 링크의 차이점은 무엇입니까?

다른 것을 사용하는 것의 장점이 있습니까? 아니면 두 가지 목적으로 만 사용됩니까?


실질적인 대답은 거의 항상 심볼릭 링크를 사용하려는 것입니다. 필자의 이해는 하드 링크는 주로 공간을 보존하기위한 것이며 특히 스냅 샷 및 증분 백업과 같은 경우에는 연속 스냅 샷에 향후 변경 될 가능성이 거의없는 동일한 파일이 많이있는 경우입니다.
Ryan Thompson

유닉스와 리눅스로 마이그레이션해야합니까? 참조 unix.stackexchange.com/questions/9575/...
ripper234

2
아니요, 마이그레이션해서는 안됩니다. 원래 질문은 유닉스에만 국한된 것이 아니기 때문에 Windows는 하드 및 소프트 링크를 지원합니다.
Richard West

1
당신이 소프트 링크 사용하는 경우 일부 응용 프로그램 (심하게 때로는) 중단됩니다 - expecially에 디렉토리 : 소프트 링크가 역 참조하고, 얻을 것이다 그것을이며 응용 프로그램은 말을 비교할 때 /var/opt/log/appname간접 참조 값 (의 설정), 말하자면 /apps/appname/logs, 그것은 불평 할 것이다 이것은 일치하지 않습니다. 이 문제를 해결하려면 mount --bind(Linux의 경우)를 사용하여 원래 디렉토리를 새 위치에 다시 마운트하십시오.
warren

1
다른 답변에 포함 된 몇 가지 요점을 정리하기 위해 Windows는 하드 링크를 만들 수 있습니다 (유닉스와 약간 다르게 동작한다고 생각하지만). mklink 명령과 h 인수를 살펴보십시오. (명령 줄에 mklink를 입력하면 기본 구문이 포함 된 도움말 파일이 표시됩니다.)

답변:


68

하드 링크는 전통적으로 동일한 파일 시스템 구조 (Unixspeak의 아이 노드)를 공유하지만 소프트 링크는 경로 이름 리디렉션입니다.

  • 하드 링크는 동일한 파일 시스템에 있어야하며 소프트 링크는 파일 시스템을 교차 할 수 있습니다.
  • 하드 링크 된 파일 중 하나를 이동하더라도 복사 및 삭제 메커니즘을 트리거하는 다른 파일 시스템으로 이동하지 않는 한 하드 링크 된 파일은 연결 상태를 유지합니다. 대상 (원본)을 이동하면 링크가 이동 될 때 소프트 링크로 연결된 파일이 손상됩니다 (절대 또는 상대 경로를 사용 했습니까? 여전히 유효합니까?).
  • 하드 링크 된 파일은 동일하며 원본은 소프트 링크에서 특별하며 원본을 삭제하면 데이터가 삭제됩니다. 모든 하드 링크가 삭제 될 때까지 데이터가 사라지지 않습니다 .
  • 소프트 링크는 모든 대상을 가리킬 수 있지만 대부분의 OS / 파일 시스템은 하드 링크 인 디렉토리를 허용하지 않습니다 ( 하드 링크 인 유닉스 디렉토리 의 ...항목 제외 ).
  • 소프트 링크는 파일 시스템 보행 도구의 특별한 지원이 필요할 수 있습니다. readlink (2)를 읽으십시오 .

(일부 세부 사항은 mat1t에 의해 기억됩니다 . 감사합니다.)


좋은 요약입니다. 모든 Linux 사용자는 이것을 알아야합니다 (하드 링크는 매우 드물지만).
Artem Russakovskii 2

dmckee의 대답 은 의미에 대한 세부 사항이 거의 정확합니다. 내가 추가 할 유일한 세부 사항은 상위 레벨에서 발생하는 일에 대한 설명입니다. 소프트 링크는 자체 파일이지만 하드 링크는 기존 데이터를 가리키는 디렉토리 항목입니다. Wikipedia에는 하드 링크 와 소프트 링크 에 대한 자세한 내용이 있습니다.
Mr. Shiny and New 安 宇

좋은 요약, 매우 유용
Razique

9
하드 링크는 소유권 정보뿐만 아니라 권한도 공유합니다.
Corey S.

6
이름으로 2 개의 하드 링크가 자동으로 생성됩니다. .. 폴더를 만들 때마다. Linux에서는 폴더에 대한 유일한 유효한 하드 링크입니다.
Mircea Vutcovici

10

요약하면 심볼릭 / 짧은 링크는 첫 번째 파일 위치에 대한 바로 가기 역할을하는 반면, 하드 링크는 디스크의 파일에 대한 바로 가기 기능입니다.

소프트 링크의 대상을 삭제하면 소프트 링크가 작동하지 않지만 하드 링크의 사본 하나를 삭제하면 파일은 하드 링크에 대한 모든 하드 링크가 제거 될 때까지 디스크에 남아 있습니다. 사실상 모든 파일 이름은 디스크의 파일에 대한 하드 링크입니다.

특정 제한 사항도 있습니다. 예를 들어 폴더의 하드 링크를 만들 수는 없지만 소프트 링크를 만들 수는 없습니다. 소프트 링크는 다른 드라이브와 파티션의 파일 / 폴더를 가리킬 수 있지만 하드 링크는 할 수 없습니다.


-1

MS Windows 시스템은 항상 소프트 링크 (바로 가기)를 사용합니다. 즉, 링크는 단순히 파일 위치를 가리키는 바로 가기 역할을합니다. 원본의 위치가 이동하면 링크가 끊어집니다. 또한 권한 변경 또는 바로 가기 이름 변경과 같은 바로 가기 작업은 실제 파일에 영향을 미치지 않습니다.

따라서 질문은 잘못된 가정으로 시작되었습니다. 그렇습니다. Vista는 소프트 링크를 사용하지만 새로운 것은 아닙니다. 즉, MS 단축키가 있습니다.


3
아니요, NTFS는 하드 링크를 지원하며 NTFS 3.1 이후 버전 (XP / 2003 이후의 현재 버전)을 갖습니다.
Chris S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.