본문 바로가기

공부/Sever

[Server] 하드 링크, 심볼릭 링크

요즘 웹서버와 리눅스 서버 두 가지를 동시에 공부를 진행하고 있어서 리눅스 서버 관련해서도 좀 적어보려고 한다. 물론 공부했던 부분 위주로 말이다. 참고로 CentOS로 공부 중이다.

 

개념 관련해서는 책 뿐만이 아니라 여기저기서 참고하여 내가 생각하는 토대로 한 번 정리해보았다.

 

링크라는 것은 어떻게 보면 기존 파일이 존재하고 다른 파일을 하나 만드는 건데 기존파일과 링크파일은 서로 내용은 같은 파일을 말한다고 볼 수 있다.

 

링크를 알기 위해서는 리눅스의 파일구조에 대해서 알아야하는데 Inode라는 것이 있다. 이 Inode는 유닉스 계통에서 사용하는 방식으로 모든 파일과 디렉터리가 가지는 고유번호를 말한다. 일단 이점을 알고 가야한다.

 

하드 링크

 

하드 링크는 사실상 '파일의 복제품'이라는 개념이다. 실제로 기존 파일이 사라지더라도 하드 링크는 제대로 작동을 하기 때문이다. 하지만 데이터는 같은 데이터를 공유한다. 왜냐하면 두 파일의 Inode가 같기 때문이다. 가장 쉽게 이해하는 법은 '포인터'를 떠올리면 쉬울 듯 하다.

 

 

간단하게 표현하면 이런 느낌이다. 기본적으로 링크 파일 뿐만 아니라 모든 파일의 형태가 포인터라고 생각하면 훨씬 편한 것 같다.

 

심볼릭 링크(소프트 링크)

 

심볼릭 링크는 한 단계 더 거쳐간다. 즉, 이중포인터 느낌이다. 마찬가지로 간단하게 표현하면

 

 

기존 파일과는 다른 Inode 링크 파일을 생성한다. 그래서 위의 하드 링크와는 다르게 기존 파일이 사라지면 작동하지 않는다. 대신 기존의 파일과 다른 내용의 같은 이름의 파일이 생긴다면 자동으로 그 파일과 링크가 된다.

 

리눅스에서는 부팅 시 CLI와 GUI를 결정하는 링크 파일에 어떤 파일을 연결하냐에 따라서 부팅 시의 UI를 결정하는 방식으로 사용하곤 했다. (구조는 이중 포인터지만 사용은 포인터 처럼 한다고 보면 될 것 같다.)

 

 

ln (기존 파일) (링크 이름) //하드링크생성
ln -s (기존 파일) (링크 이름) //심볼릭(소프트)링크생성

 

위의 2가지 명령어를 통해서 소프트링크와 하드 링크를 생성해보았다. 위의 test.txt의 하드링크인 hardlinktest 두 개의 inode가 동일한 것을 볼 수 있다.

 

밑에서는 symboliclinktest로 심볼릭링크를 만들었고 inode가 서로 다르게 생성되고 현재 심볼릭 링크가 가르키고 있는 파일을 볼 수 있다.

 

정확하게 어떤식으로 활용되는지는 잘모르겠지만 기본적으로 두 링크에 대한 개념은 알고 있는 것이 좋을 것 같다.

'공부 > Sever' 카테고리의 다른 글

[Server] 리눅스 끄적...  (0) 2020.08.25