링크
파일의 링크에는 두가지 종류가 있음
- 하드 링크
- 심볼릭 링크
하드 링크
- 하드 링크 파일만 하나 생성되고 같은 inode 를 사용한다.
- OS 자체에서 많이 사용한다. 사용 빈도 적음
- 명령 :
#ln 링크대상파일이름 링크파일이름
심볼릭 링크
- Windows의 바로가기의 개념과 비슷하다.
- 심볼릭 링크는 새로운 inode 를 만들고, Data 블록은 원본 파일을 참조한다.
- 하드 링크보다 많이 사용함
- 명령 :
#ln -s 링크대상파일이름 링크파일이름
inode 블록 ?
inode 는 크게 두 부분으로 나뉘어 진다.
- 파일 정보를 저장하는 부분
- 파일 종류, 파일 접근 권한, 파일 크기, 소유자, 접근 및 수정 시간 등의 정보를 저장한다.
- 즉, 사용자가
ls -l
로 확인할 수 있는 정보를 말한다.
- 실제로 저장되어 있는 데이터 블록의 주소
- Direct Block 과 Indirect Block, Double Indirect Block 으로 구분된다.
- Direct Block
- Indirect Block, Double Indirect Block
- 데이터 블록에 대한 주소를 갖고 있는 블록에 대한 주소를 가지고 있다.
예제
- 소프트링크(softlink)와 하드링크(hardlink)를 basefile 과 링크시켰다.
ls -li
: -li
는 inode의 인덱스 값도 확인할 수 있는 옵션이다
softlink
의 inode 는 917620
이지만, hardlink
의 inode 는 917623
으로 basefile
의 inode 와 같은 inode 를 참조하고 있는걸 확인할 수 있다.
- basefile 을 다른 디렉터리로 옮겼다.
hardlink
는 같은 inode 값을 갖기 다른 디렉터리에 있어도 basefile
을 확인할 수 있지만, softlink
는 다른 inode 값을 갖고 있기 때문에 같은 디렉터리에 없으면 원본 파일인 basefile
를 확인할 수 없다.