하드 링크의 일반적인 용도는 무엇입니까?


9

Windows에 익숙한 모든 사람은 symlink가 무엇이며 어떻게 사용되는지 상상할 수 있습니다. 반면에, 하드 링크 개념은 Windows와 관련이 없습니다 (정확합니까?).

Linux에서 하드 링크의 일반적인 용도가 무엇인지 알고 싶습니다. 나는 이미 그들이 작동하는 방식의 차이점을 설명하는 다른 게시물을 보았습니다. 내가 묻는 것은 사용자가 심볼릭 링크 대신 하드 링크를 사용하는 것이 더 나은 일반적인 상황은 무엇입니까?


3
이 질문은 Unix & Linux stackexchange에서 질문되었습니다 : 왜 하드 링크가 존재합니까?
Flimm

답변:


9

두 개 이상의 장소에 단일 파일이 필요한 하드 링크를 사용합니다. 언젠가는 위치 중 하나를 삭제하고 싶습니다. 파일에 대한 링크가 있다는 것을 잊을 수 있습니다. 이것은 더 이상 존재하지 않는 파일에 대한 심볼릭 링크로 끝나는 것을 막습니다.

설명:

실제로 파일 이름은 파일에 대한 하드 링크입니다. 따라서 모든 파일에는 하나 이상의 하드 링크가 있으며 일반적으로 "the"파일 이름으로 생각합니다. 파일을 삭제할 때 실제로는 하드 링크를 제거합니다 (따라서 이름이 "삭제"가 rm아닌 "제거 "). 파일의 마지막 하드 링크가 제거되면 시스템도 파일을 삭제합니다.


7

하드 링크 허용

  • 둘 이상의 이름을 가진 단일 실행 파일

    예:

    ls -l /bin | grep -v ' 1 ' | sort/bin당신 을 위해 그들을 나열합니다 . 결과 ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    bunzip2 bzcat 및 bzip2 파일 대신 3 개의 파일이 동일한 파일을 사용하고 파일 내부에서 수행 할 작업을 구분합니다. 코드를 절약하고 코드를 줄이면 버그가 줄어들고 유지 관리가 쉬워집니다.

  • 여러 경로로 액세스 할 단일 파일

    예를 들어, 패키지 관리자는 패키지의 라이센스 정보와 함께 LICENSE라는 파일을 설치하고 해당 디렉토리 내에 각 패키지에 대해 / usr / share / doc / $ packagename 디렉토리를 작성합니다. 일반적인 Linux 시스템의 많은 패키지는 GPL 라이센스가 부여되어 있으므로 파일 시스템에 GPL 사본 200 개 대신 사본 하나와 링크 199 개만있을 수 있습니다. ptman @ 서버 오류

여기에서 하드 링크가 작동하는 이유 (및 소프트 링크가 작동하지 않는 이유) : 하드 링크 중 하나만 제거해도 파일 자체는 제거되지 않습니다.


2
"예 : 이동 ( mv)은 사본 ( cp) + 제거 ( rm)입니다." 소스와 대상이 다른 마운트에있는 경우에만 해당됩니다. 그렇지 않으면 a mv는 파일이 아닌 이름 만 이동합니다.
Paddy Landau

1
기술적으로 가고 싶다면 : mv는 이름이 아닌 inode를 변경합니다. 그러나 당신은 맞습니다 : 그 예는 요즘 조금 오래된 것 같습니다. 예를 들어 gzip을 예로 사용했습니다.)
Rinzwind

3
주제를 조금 벗어 났지만 방금 테스트했습니다. 파일이 동일한 마운트에 mv있는 한 이름 만 변경합니다. inode는 동일하게 유지됩니다.
Paddy Landau

이것은 단지 심볼릭 링크를 사용할 수없는 이유를 실제로 설명하지는 않습니다. 심볼 링크를 사용하면 몇 바이트의 추가 데이터를 절약 할 수 있습니다. 이것은 이 답변 에서 올바르게 해결됩니다 .
Ken Sharp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.