링크

Violet_Evgadn·2023년 4월 26일
0

Linux

목록 보기
12/34

링크

링크란?

이전에 설명했지만 링크 파일이란 원본 파일을 다른 경로나 다른 파일명으로도 접근할 수 있도록 링크시킨 파일을 말한다.

여기에서 알 수 있듯 "링크"란 Windows의 바로가기 같은 개념으로 특정 파일이나 디렉터리에 링크를 걸어 다른 경로나 파일에서도 원본 파일에 접근할 수 있게 만드는 것을 말한다.

링크의 종류에는 Hard Link(하드 링크)와 Symbolic Link(심볼릭 링크)가 존재한다.

두 개 모두 동일하게 동작하는 것처럼 보이지만 개념적으로는 완전히 다른 방식으로 동작한다.

이 차이점을 제대로 알아야 상황에 맞는 링크를 활용할 수 있으므로 두 개의 차이에 대해 자세히 알아보자.

하드 링크

원본 파일과 동일한 Inode를 가지는 링크를 말한다.

이전에 말했듯 Linux는 Inode를 활용해 Process를 진행한다.

즉, Inode가 같은 링크라는 의미는 원본이 수정될 경우 링크 파일 또한 수정되며 링크 파일을 수정할 경우 원본 파일 또한 수정된다는 의미이다.

이런 의미에서 Hard Link는 사실 "바로가기"의 의미라기보다는 "다른 이름을 가진 같은 파일"이라고 보는 게 더 맞는 것이다.

Hard Link는 함수 호출에 있어서 "Call by Reference"와 비슷하며 프로그램 복사 시 "얕은 복사"와 유사한 성질을 띤다.

Call by Reference나 얕은 복사는 똑같이 주솟값을 복사본에 주기 때문에 원본 복사와 복사본이 사실 동일한 파일인데 Hard Link도 동일하다 생각하면 된다.

Symbolic Link란 다른 Inode를 가지는 공간을 새로 생성하되 새롭게 만들어진 링크 파일의 Inode가 원본 파일의 포인터(주솟값)를 저장하고 있는 Link를 의미한다.

링크 파일에 저장되어 있는 원본 파일의 포인터로 이동하여 해당 포인터에 존재하는 파일을 사용하는 개념이므로 원본 파일이 삭제될 경우 Symbolic Link 파일은 아무런 역할을 할 수 없다.

이는 Windows에서 프로그램에 대한 바로가기 아이콘을 만들어놨는데 해당 프로그램을 삭제할 경우 바로가기 아이콘을 클릭해도 아무런 이벤트를 발생시키지 못하는 것과 동일하다.


링크 관련 명령어

링크 명령어

ln [Option] [원본 파일] [링크 파일]

Option

  • -f : 동일한 이름의 링크 파일 존재 시 기존에 존재하던 링크 파일 삭제 후 재생성
    • 사실 "파일 삭제 후 재생성"이라고는 말했지만 Hard Link 파일의 Inode 값을 새로운 것으로 변경한다는 표현이 더 맞지 않나 싶다.
  • -s : Symbolic Link를 생성
    • 만약 -s를 활용하지 않으면 모두 Hard Link로 링크 파일을 생성함

링크 여부 & 종류 확인

Symbolic Link부터 확인하자.test2_symbolic에서 볼 수 있듯 Symbolic Link는 링크 파일인지 확인하기가 편하다.

화살표를 통해 Link 파일이 어떤 원본 파일을 가리키는지도 명시해 주기 때문이다.

여기에서 주의 깊게 봐야 하는 것인 2가지이다.

첫 번째로 2번째 Column에 있는 umask값이다. umask는 뒤에서도 설명하겠지만 umask가 "l" 문자로 시작할 경우 해당 파일은 Soft Link 파일이라는 것을 뜻한다.

두 번째로 File Size이다. test2는 touch 명령어로 만든 파일이기 때문에 크기가 0이다. 하지만 test2_symbolic는 5의 크기를 가짐을 알 수 있다.

위에서 말했듯 Symbolic Link 파일은 원본 파일의 주솟값을 저장하고 있다. 즉, 원본 파일이 비어 있든 매우 큰 크기를 가지든 주솟값만 저장하고 있기에 항상 5 정도의 용량을 가지고 있다.

Hard Link는 한눈에 파악하기는 어렵다.

먼저 자주 활용하는 "ls -al"이 아닌 "ls -il" 명령어를 통해 각 파일의 Inode 값을 확인해봐야 한다.

test1과 test1_hard파일을 보면 Inode값이 "431528"로 같음을 알 수 있다. 즉 2개 파일은 "이름만 다를 뿐 동일한 파일"임을 알 수 있고 Hard Link임을 확인할 수 있는 것이다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글