하드 링크는 Windows 바로 가기와 동일합니까? 항목의 목록을 포함하는 특별한 종류의

Wikipedia는 하드 링크 를 다음과 같이 정의합니다 .

이름을 파일 시스템의 파일과 연관시키는 디렉토리 항목 (디렉토리 자체는 이러한 항목의 목록을 포함하는 특별한 종류의 파일입니다.)이 용어는 파일 시스템에서 사용되어 동일한 파일에 대해 여러 개의 하드 링크를 작성할 수 있습니다.

하드 링크 의 개념이 Windows의 Shortcut 개념과 같은지 궁금합니다 .

하드 링크가 바로 가기와 동일하지 않은 경우 하드 링크와 가장 가까운 Windows 기능은 무엇입니까?



답변

아니요, 하드 링크는 완전히 다릅니다. 소프트 링크는 Windows 바로 가기에 더 가깝습니다 (중요한 차이점이 있지만 기호 링크는 하드 링크보다 Windows 바로 가기와 더 유사합니다). 하드 링크는 다른 것이며 거의 필요하지 않은 링크입니다.

다음 명령으로 소프트 링크가 생성됩니다.

ln -s foo bar

그런 다음을 실행하면 다음 ls -l이 표시됩니다.

lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

->수단 bar에 대한 링크입니다 foo. 그래서, 개방 bar, 예를 들어, 텍스트 편집기, 실제로 별도의 파일을 엽니 다 foo. 그러나 bar삭제하면 바로 가기 만 삭제되며 파일에는 영향을 미치지 않습니다 foo.

반면에 하드 링크는이 명령으로 작성됩니다.

ln foo bar

이제를 실행 ls -l하면 파일 간의 관계가 표시되지 않습니다.

-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo

그러나 이것은 매우 중요 합니다 . 실제로 동일한 파일 입니다. Unix 파일 시스템의 파일은 inode를 사용하여 저장됩니다 . inode는 기본적으로 파일 시스템이 파일 이름을 실제 하드 드라이브의 특정 위치에 매핑하는 방식입니다. 따라서 하드 링크는 대상 과 동일한 inode 를 가리키는 파일입니다 . 이것을 넣는 또 다른 방법은 모든 파일이 실제로 inode를 가리키는 하드 링크라는 것입니다. 파일에 대한 하드 링크를 만들면 파일 시스템에서 동일한 inode를 가리키는 새 포인터 (파일)가 만들어집니다. 각 inode는 여러 파일을 가리 키거나 하나를 가리 키거나 전혀 가질 수 없습니다.

이것을 더 명확하게 이해하려면 ls -i파일과 관련된 inode를 보여주는를 사용 하십시오. 소프트 링크와 하드 링크를 만들어서 어떻게되는지 봅시다 :

ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo

이제 inode를 확인하십시오.

여기에 이미지 설명을 입력하십시오

위에서 볼 수 있듯이, 모두 fooHardLinkToFooSoftLinkToFoo 다른 하나 (16648036)을 가지고있는 동안 같은 아이 노드 (16648029)가 있습니다.

로 이름 foo을 바꾸면 어떻게됩니까 mv foo bar?

여기에 이미지 설명을 입력하십시오

붉은 색은 소프트 링크가 끊어져서 대상을 더 이상 찾을 수 없음을 나타냅니다. 소프트 링크는 파일의 이름이 아니라 inode를 가리 키기 때문입니다. 이름을 변경하더라도 inode는 동일하게 유지되므로 하드 링크가 제대로 작동하지만 여전히 작동합니다.

요약하면, 하드 링크는 실제로 동일한 파일 의 두 가지 표현입니다 . 이들은 디스크의 동일한 섹션에 대한 포인터입니다. 소프트 링크는 바로 가기입니다. 실제와 유사하게, 하드 링크는 동일한 전화선에 대해 두 개의 다른 전화 번호와 같으며 소프트 링크는 같은 집에 두 개의 서로 다른 전화선을 갖는 것과 같습니다.


답변

소프트 링크와 하드 링크가 무엇인지에 대한 좋은 설명이 있지만 한 가지 설명이 필요합니다.

Windows 바로 가기소프트 링크하드 링크 와 같거나 유사 하지 않습니다 . 파일 시스템 수준에서는 파일 일뿐입니다. 구조를 이해하고이를 링크로 해석하는 것은 쉘입니다. Windows 바로 가기는 파일 시스템 (프린터, 제어판 항목, 가상 폴더)과 관련이없는 셸 네임 스페이스의 개체를 가리킬 수도 있습니다.

파일 시스템 개체 이름 외에 Windows 바로 가기에는 PIDL (셸 네임 스페이스 내의 불투명 이진 “경로”), 설명, 핫키, 아이콘, 작업 디렉토리 등의 정보가 포함됩니다. NTFS는 파일 시스템을 사용하는 경우 NTFS 바로 가기를 수정하기 위해 NTFS 개체 식별자를 추가합니다.

Windows 바로 가기의 대략적인 내용은 .desktop 파일입니다. 수퍼 유저에 대한이 질문을 참조하십시오. Linux에 .lnk와 동등한 것이 있습니까?


답변

아닙니다. Linux에서는 상황이 다르게 작동합니다.

각 파일은 ‘inode’라는 객체로 표시됩니다. 모든 inode에는 연관된 숫자 (ID)가 있습니다.

우리가 알듯이 인간은 숫자가 아니라 이름을 기억하는 데 능숙합니다. (전화 번호부가 진화 한 방식)

따라서 파일 이름이 그림에 들어와 각 inode에 사람이 읽을 수있는 이름을 부여했습니다. 기본적으로 하드 링크는 파일 이름을 inode에 바인딩합니다. inode는 여러 개의 하드 링크를 가질 수 있습니다. 특정 아이 노드에 대한 하드 링크가없는 경우, 아이 노드가 사용하는 디스크 공간이 새 파일을 위해 다시 할당 될 수 있습니다. 즉, 각 파일마다 하나 이상의 하드 링크가 있어야합니다. 파일 이름 (파일 브라우저에 표시되는 파일 이름 / 아이콘으로 표시) 자체는 하드 링크입니다.

Windows에서 바로 가기는 별도의 파일 (* .lnk 파일)입니다. 원본 파일에 대한 정보 (파일 경로를 이해할 수 있음)가 들어 있습니다. Linux 인식에서 Windows 바로 가기는 ‘.lnk’로 끝나는 파일 이름으로 하드 링크 된 또 다른 inode입니다.


답변

Windows에서는 NTFS 파일 시스템이있는 경우 하드 링크도 만들 수 있습니다.

fsutil hardlink create target_file source_file

파일은 동일한 논리 드라이브에 있어야합니다.


답변

폴더와 파일에 대해서는 하드 링크를 만들 수 없습니다.

폴더에 대한 바로 가기를 만들 수 있으므로 동일한 폴더라고 말할 수 없습니다.

질문은 심볼릭 링크 또는 소프트 링크바로 가기 의 차이점이어야합니다 .

이것에 따라 :

심볼릭 링크는 파일 시스템 수준이며 모든 것이 원본 파일로 간주됩니다. 응용 프로그램은 심볼릭 링크를 사용하기 위해 특별한 지원이 필요하지 않습니다.

“바로 가기”는 대상 파일 또는 디렉토리에 대한 참조가있는 일반 파일입니다.

따라서 바로 가기를 클릭하면 디렉토리가 실제 파일로 변경되고 소프트 링크는 실제 파일처럼 위치를 나타냅니다. 리눅스에서는 바로 가기로 cd 할 수없는 동안 터미널과 cd를 사용하여 기호 링크를 사용할 수 있습니다 .

Windows 바로 가기와 Linux 시작 관리자 (일부 위치를 가리킴)는 동일합니다.


답변