본문 바로가기
스터디/system

리눅스 심볼릭링크와 하드링크

by 깝태 2011. 8. 21.

리눅스에 링크는 심볼릭링크와 하드링크 두 가지가 있다.
먼저 심볼릭 링크는 간단하게 윈도우즈에서의 바로가기라고 생각하면 된다.

ln -s 원본파일이름 링크파일이름 

[gate@localhost iyounges.org]$ ls
iyounges
[gate@localhost iyounges.org]$ ln -s iyounges iyounges_
[gate@localhost iyounges.org]$ ls -l
total 0
-rw-rw-r--    1 gate     gate            0 Aug 20 02:55 iyounges
lrwxrwxrwx    1 gate     gate            8 Aug 20 03:06 iyounges_ -> iyounges

이처럼 사용해주면 된다. 그런데 심볼릭 링크는 단지 바로가기 일뿐, 파일 안은 텅텅 비어있으며
심볼릭 링크가 걸어진 파일을 수정한다해도 원본파일은 수정되지 않는다.
그 이유는 inode 라는 고유번호를 서로 공유하지 않기 때문이다. inode 는 운영체제가 파일을 구별하기 위해 부여한것인데
예를 들면 고정 아이피라고 생각하면 쉽게 이해될듯 하다.

두번째, 하드링크는 심볼릭 링크와 똑같은 의미인데 단 inode 를 공유하기 때문에
하드링크에서 파일을 수정하면 원본 파일 또한 수정된다.

ln 원본파일이름 링크파일이름 

[gate@localhost iyounges.org]$ ln iyounges iyounges__
 
[gate@localhost iyounges.org]$ ls
iyounges iyounges__
[gate@localhost iyounges.org]$ ls -l
total 0
-rw-rw-r--    2 gate     gate            0 Aug 20 02:55 iyounges
-rw-rw-r--    2 gate     gate            0 Aug 20 02:55 iyounges__

단, 주의해야할것은 원본파일이 삭제된다면 링크가 걸어진 파일은 아무 쓸모가 없으니 주의해야한다.
마치 윈도우즈에서 바로가기를 실행했을때 원본파일을 찾을수 없다면서 뜨는 메세지처럼 된다고 생각하면 된다.