티스토리 뷰

윈도우로 치면 "바로가기" 같은 개념으로, 리눅스에도 링크 기능이 있다. 특정 파일이나 디렉터리를 링크 걸어 사용할 수 있는데, 링크에는 두 종료가 있다.


첫 번째 : 하드 링크 (hard link)

두 번째 : 심볼릭 링크 (symbolic link)


두 개 모두 처리하는 역할은 같지만 개념이 약간 다르다. 그 개념을 바로 잡고 적절하게 사용할 수 있어야겠다.


하드 링크 (hard link)

원본 파일과 동일한 inode를 가진다. 그렇기 때문에 원본 파일이 삭제 되더라도 원본 파일의 inode를 갖고 있는 링크 파일은 여전히 사용 가능하다. 사실 링크라는 표현도 애매하다. 같은 inode를 가르키는 서로 다른 이름이라고나 할까? 원본이라는 개념이 없다.


아래 잠깐 예제를 살펴보자.


우선 테스트를 위해 test라고 하는 더미 파일을 생성해줬다. 이때 생성된 test의 inode 값은 ls의 -i 옵션으로 확인이 가능한데 787314임을 알 수 있다. 


그리고 심볼릭 링크로 aaaa 파일을 생성하고, 하드링크로 bbbb 파일을 생성했다. 그리고 ls 를 통해 생성된 파일을 확인하도록 한다. 

살펴보면 test의 inode인 787314를 bbbb도 동일하게 사용하는 것을 알 수 있다.


심볼릭 링크 (symbolic link)

원본 파일의 이름을 가르키는 링크다. 그러므로 원본 파일이 사라지게되면 역할을 수행할 수 없다. 장점은 전혀 다른 파일이라도 원본 파일과 이름이 같다면 계속 사용가능하다는 것이다. 주로 dynamic library의 so 파일과 연계해서 사용하게 된다. 


테스트를 위해 위에서 생성한 test 파일을 삭제해보자.


aaaa는 링크가 깨져서 접근이 불가능하고 bbbb는 여전히 사용 가능하다. aaaa를 다시 사용하기 위해서는 test라는 이름을 갖는 파일을 생성해주면 된다.


OpenSSL을 예로들면, libcrypto.so.1.0.0 같은 실제 파일을 libcrypto.so로 링크를 걸어 사용한다. OpenSSL을 패치할 때는 libcrypto.so.1.0.0만 변경해주면 되기 때문에 사용이 무척 간편하다.


'개발 > Linux' 카테고리의 다른 글

strtok(), strtok_r() 뽀개기  (0) 2017.03.16
sshd PermitRootLogin 기본 값 변경  (0) 2017.02.13
하드링크와 심볼릭링크 개념잡기  (0) 2017.01.05
DocuWiki 시간 동기화  (0) 2016.12.19
vim 한글 인코딩 문제  (0) 2016.12.12
semaphore 사용하기  (0) 2016.06.01
댓글
댓글쓰기 폼