ln - 링크 생성

ln 명령어는 하드 링크와 심볼릭 링크를 만들 때 사용한다.

[ ln file link ] 와 같이 하드 링크를 만들 수 있고,

[ ln -s item link ] 와 같이 심볼릭 링크를 만들 수 있다.

 

하드 링크

하드 링크는 링크를 생성하는 기존의 방식이고, 심볼릭 링크는 비교적 최근의 방식이다.

기본적으로 하나의 파일에는 하나의 하드 링크가 있는데, 그것이 바로 파일의 이름을 만들어주는 것이다.

원본을 삭제하더라도, 다른 하드 링크에서는 해당 파일에 접근이 가능하다. (모든 하드 링크가 삭제될 때 까지 내용이 남아 있음)

파일이 생성될 때 마다 공간이 할당되고 고유의 번호인 inode 가 주어지는데, 하드 링크는 이 inode 를 공유하는 것이다.

파일의 inode 를 확인하고 싶을 경우 ls -i 옵션을 주어서 확인할 수 있다.

그렇기 때문에 하드 링크는 외부 파일을 참조할 수 없다(같은 디스크 파티션에 있는 파일이 아니면 참조할 수 없다).

하드 링크는 디렉토리를 참조할 수 없다.

 

심볼릭 링크

심볼릭 링크는 참조될 파일이나 디렉토리를 가리키는 텍스트 포인터가 포함된 파일을 생성한다.

새로운 i-node 를 부여받아 파일을 만드는데, 이 inode 가 바로 참조할 파일이나 디렉토리의 inode 를 가리키게 된다.

윈도우즈에서의 바로가기, 혹은 C++ 에서 레퍼런스를 거는 것과 비슷한 개념으로 이해하면 편하다.

심볼릭 링크와, 참조하는 파일은 서로 구분하기 힘들다. 심볼릭 링크에서 편집을 하면 원본도 똑같이 변경이 이루어진다.

원본을 삭제할 경우, 링크 그 자체(텍스트 포인터)는 살아있지만, 가리키는 곳에 아무것도 없기 때문에 깨졌다고 말한다.

대부분의 파일 작업은 링크 그 자체에서 실행되는 것이 아니라, 링크가 가리키는 원본 파일에서 이루어진다.

깨진 링크는 ls 명령어 등에서 빨간색으로 표현된다.

심볼릭 링크는 drwxrwxrwx 의 양식에서 맨 첫 문자에 d 나 - 가 아닌 l 이 들어간다.

 

개념적으로 이해가 간다고 하더라도, 직접 만들고 inode 를 확인해보면서 어떤 식으로 작동하는지 느끼는 것이 훨씬 좋다.

하드 링크를 걸어서 파일의 내용을 수정해보고, ls -il 로 inode 와 링크 개수를 확인해보고, 원본을 삭제해보거나

심볼릭 링크를 걸고 원본을 지우면 ls 에서 어떻게 보이는지 등등 직접 해보기!

'STUDY > Linux' 카테고리의 다른 글

[리눅스] 리다이렉션  (0) 2021.01.25
[리눅스] 명령어 알아보기  (0) 2021.01.23
[리눅스] 파일과 디렉토리 조작  (0) 2021.01.21
[리눅스] 와일드 카드  (0) 2021.01.20
[리눅스] 시스템 디렉토리  (0) 2021.01.19

+ Recent posts