from Dictionary - Symbolic link
HardLink vs. Symbolic Link(softLink)
먼저 리눅스에는 inode라는 개념이 있다. inode는 유닉스 계통의 파일 시스템에서 사용하는 자료구ㄷ조이다.
모든 파일과 디렉토리는 inode를 가지고 있다. 그리고 여기에는 파일의 허가권, 소유권, 파일의 실제 위치 등 중요한 정보들이 있다.
inode는 실제 파일 내용을 갖고 있는 것이 아니라 파일의 내용을 갖고 있는 주소를 포함한다.
776844 app 388947 config 259817 cronLog 389047 file 260194 homebridge 128107 pi 260893 projects
pi@ubuntu:/home$
HardLink
하드 링크는 원본 파일과 동일한 inode를 직접적으로 가리킨다. 따라서 원본 파일이 사라지더라도 데이터만 살아 있다면 원본 파일에 접근 가능하다.
- 동일한 파일 시스템 내에서만 하드 링크 생성 가능
- 디렉터리 링크 불가능
- 대상파일과 동일한 inode 번호와 허가권을 가짐
- 대상 파일을 옮기거나 삭제해도 대상 파일을 참조한다.
- 소프트링크는 원본의 존폐에 따라 사용할 수 있지만 하드링크는 원본이 삭제되더라도 원본과 동일한 내용의 파일을 가지므로 자원을 공유하면서도 데이터를 안전하게 관리하고자 할 때 사용한다.
# 하드링크 생성
$ ln [대상파일] [하드링크파일]
Symbolic(soft) link
심볼릭 링크는 생성하면 또 다른 inode를 생성해서 이를 바라본다.
- 심볼릭 링크는 하드 링크의 단점을 보완하려고 탄생
- 파일 시스템과 대상 파일이 존재하는 파일 시스템이 달라도 생성 가능하다.
- 하드 링크는 파일만 참조 가능하고 디렉토리는 참조 불가하지만 심볼릭 링크는 가능하다.
- 대상 파일과 심볼릭 링크 파일은 서로 inode 번호와 파일 허가권이 다르다.
- 대상 파일의 inode가 아닌 이상 파일의 데이터 경로만을 참조
- 원본이 존폐 여부에 영향을 받는다.
- 파일 종류 l로 시작한다.
# 심볼릭 링크 생성
$ ln -s [대상파일] [심볼릭링크파일]