728x90
반응형

윈도우에는 바로가기라는 편한 놈이 있다.

윈도우에 이녀석이 없다면 우리는 파일 경로를 다 외워서 파일을 찾은 후 실행을 시켜야 할 것이다.

하지만 바탕화면이나 보기 편한 곳에 바로가기를 만들어 아주 편하게 사용하고 있다.

그렇다면..!! 리눅스에는 이런 기능이 없는가!?

...없겠는가? 당연히 있다.

그럼 지금부터 윈도우의 바로가기와 같은 리눅스의 링크(Link)에 대해 알아보자!

 

링크를 알기 위해서는 우선 앞 게시물에 설명했던 Inode에 대해 알아야한다

( 잘 모르겠다!! http://blog.naver.com/bbaroo27/100183681724에서 찾아 읽어보자 ! 좀...길다)

간단히 설명하면 Inode는 하드디스크와 디렉토리로 정리된 가상의 공간을 연결시켜주는 테이블이다.

그 개념에 대해 자세하게 알고 다음 설명을 보길 바란다!

 

우선 리눅스에서의 바로기가인 링크는 2가지 경우로 나뉘는데 하드링크(Hard link)

심볼링크(symbol link)로 나뉘게 된다.

우선 하드링크는 위에서 말했던 Inode를 공유하는 방식이고

심볼링크는 원본파일을 가르키는 파일을 생성하는 방식이다.

우선 하드링크를 예를 들면 만약 test라는 파일이 있고 그 test파일을 abc,123,qwe라는 3개의

하드링크가 존재한다 가정하자.

대충 이러한 그림이 그려질 것이다. 설명과 같이 Inode 테이블에 같은 링크가 걸려있는 상태다.

만약 여기서 원본이였던 test파일을 삭제해보자 !!!

과연 abc와 123과 qwe는 어떻게 될 것이냐!!?

평소에 윈도우 바로가기에 익숙한 우리의 답으로는 작동이 하지 않을 것이라 생각하기 쉽다.

하지만 !! abc와 123과 qwe는 정상적으로 작동한다.

그 이유는 Inode에 대해 잘 읽어본 분이라면 잘 알 것이다.

(Inode에 기록된 파일은 지워지지 않은 파일이다. 즉 HDD가 덮어쓰기를 하지 않는 영역이다.)

그리고 원본 test가 용량이 500KB라 하면 4개의 파일의 총 용량은 얼마인가!?

물론 각각 500KB라 표시는 되어 있으나 실제 차지하는 용량은 500KB다.

(test, abc등 저 공간은 가상의 공간이므로, 파일의 크기를 차지하지 않는다.)

그리고 ls -l의 옵션으로 검색해보면 권한 뒤 숫자가 있는데, 그 숫자만큼 하드링크수가 있다는 뜻이다.

그리고 4개의 하드링크 중 하나라도 내용을 수정하게 되면 모든 하드링크는 내용이 바뀌게 된다.

(Inode만 공유하지 HDD의 같은 위치의 파일을 건드리는 것이니.. C언어의 포인터라 생각하면 된다!)

 

하드링크 명령어 사용방법은 ln <원본 파일 or 디렉토리 위치> <하드링크 위치와 이름>

 

심볼 링크는 윈도우의 바로가기랑 비슷하다.

즉 원본의 주소를 읽어오는 방식이다.

그림과 같이 2개의 Inode가 잡히게 된다.

심볼링크는 원본파일의 Inode를 가리키게 된다.

즉 2개의 Inode가 생기게 된다.

이로 인해 원본을 다른 곳으로 이동시면 사용이 불가능하며

새로운 Inode가 생성되므로 용량을 차지하게 되며

원본의 자체 포인터 역할 뿐이므로, 원본 수정 시 수정된 파일이 보이고

원본의 삭제 시 링크가 끊기며

원본 삭제 후 같은 위치 같은 이름으로 다른 내용의 파일의 이름을 만들면 그 바뀐 내용이 링크된다.

물론 바로가기 텍스트 안의 내용을 수정해도 원본이 수정된다.

이 화면은 /tmp/test파일을 /as파일로 심볼링크 파일을 만드는 과정이다

하드링크의 앞의 숫자의 변화와는 다르게 뒤에 경로가 젹히는걸 알 수 있다.

 

심볼링크 명령어 사용방법은 ln -s <원본 파일 or 디렉토리 위치> <심볼 링크 위치와 이름>

 

그리고 마지막으로 몇가지 실습을 통해 얻은 사실을 정리하였다.

 

1. 디렉토리는 하드링크가 불가능하고 심볼링크가 가능하며, 디렉토리 내용을 심볼링크로 수정 시 원본 수정됨.(당연한 결과다. 디렉토리는 가상의 공간으로 Inode가 존재하지 않기 때문에)

2. 하드링크심볼링크 된다.

3. 심볼링크하드링크를 걸면 원본 파일의 또다른 심볼링크가 생긴다.

4. 심볼링크의 원본 삭제시 동일한 경로와 폴더로 파일 생성하면 새로생긴 파일이 링크된다.

5. ls -l로 봤을 때 하드링크는 권한 옆 숫자가 링크의 수를 의미하고, 심볼링크는 끝에 경로 표시

 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,