
하드 링크는 동일한 파일 시스템의 파일과 디렉토리를 링크하지만 소프트 링크는 파일 시스템 경계를 통과 할 수 있습니다.
링크를 이해하기 전에 먼저 inode를 이해해야하며, inode는 파일 생성 날짜, 파일 권한 부여, 파일 소유자 등 파일에 대한 메타 데이터로 구성된 데이터 구조입니다.
비교 차트
비교 근거 | 하드 링크 | 소프트 링크 |
---|---|---|
기본 | 파일은 하드 링크라고하는 여러 가지 다른 이름을 통해 액세스 할 수 있습니다. | 소프트 링크라고하는 해당 파일을 가리키는 다른 참조를 통해 파일에 액세스 할 수 있습니다. |
원본 파일이 삭제 될 때 링크 유효성 검사 | 여전히 유효하며 파일에 액세스 할 수 있습니다. | 무효 |
작성에 사용 된 명령 | 음 | ln -s |
inode 번호 | 같은 | 다른 |
연결할 수 있습니다. | 자체 파티션으로. | 네트워크 화 된 다른 파일 시스템에도. |
메모리 사용량 | 적게 | 더 |
상대 경로 | 해당 사항 없음 | 허용됨 |
하드 링크의 정의
하드 링크 는 동일한 파일 시스템에있는 두 개의 파일을 직접 링크하고 식별을 위해 파일의 inode 번호를 사용합니다. 하드 링크는 디렉토리에서 구현 될 수 없습니다 (아이 노드를 가리키기 때문에). " ln "명령을 사용하여 하드 링크를 생성하면 명령 행에 원래 파일을 참조하는 데 사용할 수있는 다른 파일이 생성됩니다. 원본 파일과 생성 된 파일은 모두 동일한 inode 및 내용을가집니다. 따라서 그들은 동일한 권한과 동일한 소유자를 갖습니다.
원본 파일을 제거해도 하드 링크 된 파일에는 영향을 미치지 않으며 하드 링크 된 파일은 그대로 유지됩니다. inode는 자체 하드 링크의 수를 계산하기 위해 카운터를 보유합니다. 카운터가 0 값을 나타내면 inode가 비게됩니다. 하드 링크를 변경할 때마다 원본 파일을 모방합니다.
소프트 링크의 정의
소프트 링크 는 대개 원본 파일의 대체 경로 (또는 별칭)입니다. 이것들은 심볼릭 링크 라고도 합니다 . 여기에는 링크의 "대상 파일"의 이름이 포함되며, 이 플래그는 소프트 링크임을 나타냅니다. 파일에 액세스하면 소프트 링크는 소프트 링크의 제목에 쓰여진 경로를 통해 대상 파일로 리디렉션합니다.
소프트 링크가 바로 가기로 작동하는 Windows OS의 경우 매우 편리합니다. 소프트 링크의 생성 및 삭제는 원본 파일에 영향을 미치지 않습니다. 대상 파일이 삭제되면 소프트 링크가 끊어 지므로 아무 것도 가리 키지 않으며 대상 파일에 액세스 할 때 오류 메시지가 생성됩니다. 소프트 링크는 하드 링크와 달리 inode 번호를 사용하지 않습니다. 절대 경로 또는 상대 경로는 심볼릭 링크의 일부일 수 있습니다.
하드 링크와 소프트 링크의 주요 차이점
- 하드 링크는 대상 파일에 액세스하기 위해 inode를 참조하는 원본 파일의 추가 이름입니다. 반대로 소프트 링크는 원본 파일과 구별되며 원래 파일의 별칭이지만 inode는 사용하지 않습니다.
- 원본 파일이 삭제되면 소프트 링크가 무효화되는 반면 하드 링크는 대상 파일이 삭제 된 경우에도 유효합니다.
- Linux에서 하드 링크를 만드는 데 사용되는 명령은 " ln "입니다. 대조적으로, 소프트 링크에 사용되는 명령은 " ln -s "입니다.
- 하드 링크는 소프트 링크와는 다른 inode 번호를 가지며, 대상 파일과 소프트 링크는 별개의 inode 번호를 가지고 있습니다.
- 하드 링크는 자체 파티션으로 제한되지만 소프트 링크는 다른 파일 시스템을 커버 할 수 있습니다.
- 어떤 경우에는 하드 링크의 성능이 소프트 링크보다 낫습니다.
- 상대 경로와 절대 경로는 모두 소프트 링크에서 허용됩니다. 반대로, 상대 경로는 하드 링크에서 허용되지 않습니다.
결론
하드 링크는 추가 공간이 필요하지 않으며 매트가 더 빨리 해결되지만 하드 링크에 적용된 변경 사항은 원본 파일에 반영됩니다. 반면에 소프트 링크는 추가 공간이 필요하지만 소프트 링크의 변경 사항은 원본 파일에 영향을주지 않습니다. 소프트 링크는 하드 링크와 달리 디렉토리에 허용됩니다.