본문 바로가기
os/linux

[Linux] 리눅스 ln - 심볼릭 링크(Symbolic Link)와 하드 링크(Hard Link)

by moonsiri 2021. 12. 28.
728x90
반응형

ln

ln은 Link의 약어로써 리눅스 파일 시스템에서 링크 파일을 만드는 명령어입니다. 리눅스에서는 심볼릭 링크와 하드 링크, 두 가지 링크 파일이 존재합니다.

ln --help

 

 

심볼릭 링크 (Symbolic Link)

MS 윈도우의 바로가기와 비슷한 개념으로 단순히 원본 파일을 가리키도록 연결하는데, 원본 파일을 링크할 뿐이라 원본 파일의 크기와는 무관합니다. 그러므로 원본 파일을 수정하면 심볼릭 링크 파일도 수정되고, 심볼릭 링크 파일을 수정하면 원본 파일도 수정됩니다.

보통 리눅스에서 라이브러리의 버전 관리를 편리하게 하기 위해 사용합니다.

 

심볼릭 링크 디렉터리 생성

ln -s [원본 파일] [링크 파일]

심볼릭 링크 파일이 생성되면 맨 앞에 'd'가 아닌 심볼릭 링크를 뜻하는 'l'이 지정됩니다.

 

심볼릭 링크 대상 파일 변경

ln -Tfs [변경할 대상 파일] [링크 파일]

 

심볼릭 링크 디렉터리 해제

심볼릭 링크 디렉터리 해제(삭제) 전에 심볼릭 링크 디렉터리에 연결되어 있는 원본 파일을 삭제해보겠습니다.

연결되어 있는 파일이 삭제되면 심볼릭 링크 디렉터리는 링크 파일의 원본 파일이 없다는 것을 표시합니다.

심볼릭 링크 디렉터리 해제는 기본 디렉터리 삭제 명령어와 같습니다.

rm [링크 파일]

 

 

하드 링크 (Hard Link)

하드 링크는 파일 헤더의 위치 정보를 기반으로 동일한 파일을 생성하는 링크로, 얼핏 보면 cp로 복사하는 것과 같아 보일 수 있는데 하드 링크 파일의 inumber는 원본 파일의 inumber가 복사되어 동일한 inode를 사용합니다.

 

하드 링크 생성

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

cp로 복사한 cp_link와 하드 링크로 생성한 link_linux를 확인해보면 하드 링크 파일은 inode 번호가 원본 파일과 동일합니다. 즉, 큰 파일에 대해 하드 링크를 많이 만들어도 디스크 용량은 늘어나지 않습니다.

그리고 심볼릭 링크 파일과 동일하게 원본 파일의 내용이 변경될 경우 링크 파일의 내용 또한 자동으로 변경됩니다.

 

하드 링크 삭제

심볼릭 링크와 다르게 하드링크 파일과 원본 파일은 서로 다른 파일이기 때문에 둘 중 하나를 삭제하더라도 나머지 하나는 그대로 남아 있습니다.

하드 링크는 원본 데이터의 위치 정보를 가진 파일이므로 파일 전체를 지우고자 한다면 원본과 생성한 하드링크 모두 삭제해야 합니다.

 

 

하드 링크와 심볼릭 링크의 차이점

하드 링크 심볼릭 링크
파일에만 링크 가능 파일 또는 디렉토리에 링크 할 수 있음
존재하지 않는 파일에 대해 하드 링크를 작성할 수 없음 존재하지 않는 파일에 대해 심볼릭 파일을 작성할 수 있음
연결되어 있는 파일이 어떤 파일인지 알기 어려움 -> 로 연결되어 있는 파일을 찾기 용이
같은 파일 시스템간에서만 작성 가능 다른 파일 시스템간에서도 작성 가능
728x90
반응형

댓글