본문으로 바로가기
반응형

MS윈도우를 사용하다 보면 어떤 파일을 실행할 때, 해당 파일을 직접 실행하는 경우도 있지만 바로가기를 통해 접근하는 경우도 많다.

리눅스 역시 윈도우의 바로가기와 비슷한 기능을 제공하는데, 이를 리눅스 링크 라고 한다.

하지만 리눅스에서 링크는 윈도우의 바로가기와 조금 다르다. 리눅스에서 링크는 하드링크(Hard Link)와 심볼릭링크(Symbolic Link, 혹은 Soft Link) 두 가지가 있다.

리눅스의 두 가지 링크에 대한 차이점과 생성 방법에 대해 알아보자.


리눅스 inode


먼저, 리눅스에는 inode라는 개념이 있다. 

이는 리눅스(유닉스) 파일 시스템에서 사용되는 자료 구조이다. inode 파일 혹은 디렉터리의 각종 정보들을 담고 있다. 모든 파일과 디렉터리는 한개씩 inode를 가지고 있으며 여기에는 해당 파일의 허가권, 소유권, 파일의 실제 위치 등 중요한 정보들이 들어있다. inode가 모여 있는 공간을 inode block 이라고 한다. inode block이 차지하는 공간은 매우 작으며, 실제 데이터가 저장되는 block이 디스크의 대부분을 차지한다. inode는 데이터의 우편번호 역할을 한다고 볼 수 있다.



하드링크와 심볼릭 링크



위 그림을 자세히 보면 확실하게 이해 할 수 있을 것이다.

원본 파일로 하드 링크를 만들면, 하드 링크는 원본 파일과 동일한 inode를 직접적으로 가리킨다. 따라서 원본 파일이 사라지더라도 데이터만 살아 있다면 원본 파일에 접근이 가능하다.

하지만 심볼릭 링크(소프트 링크)의 경우는 만들게 되면 또 다른 inode를 생성해서 이를 바라본다. 복사 생성된 inode는 포인터를 카리키고, 포인터는 다시 원본 파일을 가리킨다.

따라서 특정 데이터에 접근할 때, 심볼릭 링크를 통해 접근할 경우 다시 원본 파일을 거치게 된다. 때문에 원본 파일이 사라질 경우 해당 데이터에 접근할 수 없다.


리눅스 링크 명령어 ln


링크를 생성하는 명령어는 ln이다.

기본적으로 ln 명령어만 사용할 경우, 하드링크를 생성한다.

심볼릭 링크(소프트링크)를 생성하기 위해서는 -s 옵션을 줘서 "ln -s 대상파일" 과 같은 식으로 실행한다.


아래는 이를 직접 리눅스 터미널 상에서 테스트 해 본 화면이다.

1. origin 파일에 대해 하드링크와 소프트링크를 만들었다. 링크와 관련된 정보를 보기 위해서는 "ls -il" 명령어를 사용한다.


2. 맨 앞부분에 있는 숫자가 inode 주소이다. 원본 파일과 하드링크는 동일한 값을 가지고 있지만 softlink는 다른 값을 가지고 있다. 허가권한도 softlink는 모두에게 열려있다.


3. 이제 origin 파일을 상위 디렉터리로 잠시 이동시켜보자.


4. 다시 ls -il 명령어로 링크 정보를 보면, 하드링크는 변화가 없지만 소프트링크에 검은 명암이 칠해진 것을 볼 수 있다. cat 명령어로 하드링크와 소프트링크에 접근하면 하드링크는 여전히 원본 데이터를 보여주지만 소프트링크는 파일이나 디렉터리가 없다는 에러와 함께 실행되지 않는다.



반응형

 Other Contents