하드 링크는 Windows 바로 가기와 동일합니까?


52

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

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

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

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


1
실제로 당신이 공유 한 위키 페이지에서 훌륭한 참고 문헌이 있습니다.
편심

8
Microsoft NTFS는 하드 링크를 지원하며 유닉스 하드 링크와 매우 유사합니다. 나는 바로 가기 특수 객체가 윈도우 ENVIRONNEMENT을 OB 생각하지만, 그들은 실제 하드 링크에 적 파일 시스템 조직 반대로 관련이없는
Kiwy

다음 링크는 좋은 설명을 제공합니다. comptb.cects.com/…

3
병렬은 오해의 소지가 있다고 생각합니다. 바로 가기는 "인터페이스"로, 파일 시스템이 아닌 인터페이스에서 해석되는 대상에 대한 텍스트 정보가있는 파일 만 링크합니다. 커맨드 라인에서 그들은 실제로 파일 시스템 의미에서 무언가를 가리키고 있지 않습니다. Windows (또는 NTFS)는 적절한 심볼릭 링크가 있습니다. en.wikipedia.org/wiki/NTFS_symbolic_link 는 바로 가기 나 하드 링크가 아닙니다. 사실 Windows에서 폴더를 사용하여 Dropbox 폴더를 어디서나 사용할 수 있습니다. 단축으로는 수행 할 수 없습니다.
alfC

5
Windows 바로 가기 파일은 Linux .desktop 파일과 매우 유사합니다. Linux 심볼릭 링크와 하드 링크는 때때로 같은 목적을 수행하는 완전히 다른 것입니다.
mikebabcock

답변:


113

아니요, 하드 링크는 완전히 다릅니다. 소프트 링크는 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는 동일하게 유지되므로 하드 링크가 제대로 작동하지만 여전히 작동합니다.

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


6
@Kiwy 그것은 정반대입니다. 절대 심볼릭 링크는 여러 가지 방식으로 실패합니다 (데이터를 옮기고 다른 장소에 마운트하고 백업하면…)하면 피하는 것이 가장 좋습니다.
Gilles 'SO- 악마 그만해

3
또한 하드 링크 를 삭제 ( rm또는 통해 unlink())하면 파일 내용이 차지하는 블록이 해제 될 때 링크 카운트가 0에 도달 할 때까지 링크 카운트 만 감소 한다는 점에 주목할 가치가 있습니다. "하드 링크는 실제로 동일한 파일의 두 인스턴스입니다"라고 말하는 것이 확실하지 않습니다. 두 이름 이 파일 자체에 두 개의 인스턴스가있는 것이 아니라 동일한 inode와 동일한 내용을 가리 키기 때문입니다. 어떤 의미.
Emmet

7
Windows 바로 가기는 셸에서 사용하는 파일이므로 셸이 알고 있지만 파일 시스템은 아는 작업을 수행 할 수 있습니다. 예를 들어 셸 네임 스페이스 (예 : 제어판, 컴퓨터 등)로 바로 가기를 만들거나 아직 설치되지 않은 응용 프로그램 (최초 사용시 설치됨)으로 바로 가기를 만들 수 있습니다. 이러한 것들은 파일 시스템 세계에서 직접적으로 동등한 것이 없습니다.
Joey

2
나는이 대답을 좋아하지만 실제로 Windows 바로 가기가 무엇인지 이해하기에는 매우 열악합니다. 아래의 @Shaakunthala는 Windows 바로 가기가 symlink보다 Linux .desktop 파일과 비슷하므로 더 나은 응답을 제공합니다.
mikebabcock

18

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

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

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

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


6

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

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

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

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

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


3
NTFS는 실제로 이와 매우 유사하게 작동합니다. 파일은 MFT의 항목이며 디렉토리 항목은 파일 이름을 파일 ID에 간단히 매핑합니다. 2008 / 7 / Vista (?)부터는 심볼릭 링크까지 하드 링크를 지원합니다. 이 시점에서 가장 큰 차이점은 문화적입니다.
cHao

2

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

fsutil hardlink create target_file source_file

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


맞습니다. NTFS도 하드 링크를 지원합니다. 종종 도구를 사용하려면 관리자 권한이 있어야합니다. "동일한 논리 드라이브"에 대해-더 정확한 것은 동일한 파일 시스템에 있어야한다는 것입니다. 논리 드라이브 에 의해 생성 된 드라이브 문자를 포함하여 아무 것도 할 수 subst명령. 그러나 툴은이를 알지 못하고 관리 할 수 ​​없으므로 하드 링크 생성 을 거부합니다 . 매우 유용한 것은 익스플로러가 생성 할 수 있도록하는 Link Shell Extension 입니다.
Tobias

1

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

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

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

이것에 따라 :

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

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

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

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


2
뭐? 소프트 링크는 파일 일 뿐이며 이상한 파일이지만 예를 들어 inode를 사용합니다. 그것들은 원본으로 취급되지 않습니다 (하드 링크). 대부분의 OS에서 디렉토리에 대해 하드 링크가 허용되지 않는 것은 사실이지만 이것은 안전 기능 일 뿐이며 이에 대한 예외 가 있습니다 (예 : OSX 타임머신). 물론 바로 가기로 CD를 넣을 수 있습니다 (소프 링크로 CD를 말할 수 있기 때문에 Windows 바로 가기를 의미한다고 가정합니다).
terdon

1
cmd를 사용하여 바로 가기로 cd 할 수 있습니까?
nux

1
방금 Windows VM을 시작하고 바탕 화면의 폴더에 대한 바로 가기를 만들었습니다. Windows 바로 가기는 심볼릭 링크와 매우 유사합니다 (동일하지 않은 경우). 당신이 그들에게 CD를 어떤 이유로 cmd.exe를 사용하지 않을 수 있지만, 당신은 할 수 있는 디렉토리에 .LNK를 생성하고 탐색기를 통해 그것을 사용할 수 있습니다.
terdon

1
다운 유권자는 다운 투표 이유를 제시해야합니다
nux

5
죄송합니다. 여전히 올바르지 않습니다. 심볼릭 링크는 대상을 일반 텍스트 ( 여기 참조 ) 로 포함하는 파일 이며 심볼릭 링크는 원본으로 취급 되지 않습니다 . 즉, 심볼릭 링크와 하드 링크의 전체 차이점입니다. 리눅스 런처 (.desktop 파일을 의미한다고 가정)는 이것과 전혀 관련이 없으며 완전히 다릅니다. 직접 말한 것처럼 Windows 바로 가기는 파일 (프로그램 포함) 및 폴더 (mac 및 Windows에는 폴더가 있고 Linux에는 디렉토리가 있음)를 가리킬 수 있습니다. .desktop 파일을 사용하면 프로그램을 시작할 수 있습니다. 그들은 어디에도 연결되지 않습니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.