리눅스에서는 하나의 파일을 다양한 방식으로 다른 위치에서 참조할 수 있습니다.
그 대표적인 방법이 바로 하드 링크(hard link)와 소프트 링크(soft link)입니다.
이 두 개념은 겉보기엔 비슷하지만, 실제로는 동작 방식과 목적이 꽤 다릅니다.
소프트 링크(Soft Link, 심볼릭 링크)
소프트 링크는 윈도우의 "바로가기"와 비슷한 개념입니다.
원본 파일의 경로를 참조하는 별도 파일이 생성됩니다.
만드는 방법
ln -s 원본파일 링크이름
예시:
ln -s /home/user/data.txt link_to_data.txt
특징
- 링크는 원본 파일의 위치 정보를 저장함
- 원본이 삭제되면 링크는 끊어짐 (broken link)
- 디렉토리에도 링크 가능
하드 링크(Hard Link)
하드 링크는 동일한 파일의 또 다른 이름(alias)을 만들어주는 방식입니다.
두 개의 파일이지만, 실제로는 같은 inode(파일 식별자)를 공유합니다.
만드는 방법
ln 원본파일 링크이름
예시:
ln /home/user/data.txt hardlink_to_data.txt
특징
- 링크와 원본은 완전히 동등한 파일
- 원본을 삭제해도 하드 링크는 살아있음 (내용 유지됨)
- 디렉토리에 대해서는 하드 링크 불가 (보안상 제한)
- 같은 파일 시스템 내에서만 가능
소프트 링크 vs 하드 링크 비교
| 항목 | 소프트 링크 | 하드 링크 |
|---|---|---|
| 기본 개념 | 원본 파일 경로를 참조 | 원본 파일과 동일한 inode 사용 |
| 원본 삭제 시 | 링크가 깨짐 | 링크는 그대로 동작 |
| 디렉토리 링크 | 가능 | 불가능 |
| 파일 시스템 | 다른 파일 시스템도 가능 | 같은 파일 시스템에서만 가능 |
확인 방법 – ls 명령어 활용
ls -li
inode 번호를 함께 표시해주기 때문에 하드 링크는 동일한 inode를 공유하는 것을 확인할 수 있어요.
예시:
$ ls -li
123456 -rw-r--r-- 2 user user 1000 example.txt
123456 -rw-r--r-- 2 user user 1000 hardlink_to_example.txt
inode 번호가 같으면 하드 링크, 다르면 소프트 링크입니다.
어떤 링크를 써야 할까?
소프트 링크는 원본 파일의 경로를 따르는 "가벼운 연결"로서, 주로 디렉토리 링크나 외부 위치 연결에 유용하고,
하드 링크는 동일한 파일 시스템 안에서 파일을 중복 저장 없이 공유할 때 사용됩니다.
'개발 > 리눅스' 카테고리의 다른 글
| [Linux] Bash 스크립트 기초 문법 배우기 (0) | 2025.07.20 |
|---|---|
| [Linux] logrotate로 로그 파일 관리 자동화하기 (1) | 2025.07.19 |
| [Linux] Snap, Flatpak으로 최신 앱 설치하는 방법 (1) | 2025.07.17 |
| [Linux] apt, yum, dnf 패키지 관리자 사용법 (1) | 2025.07.16 |
| [Linux] 하드디스크, 파티션, 마운트 기본 개념 (0) | 2025.07.15 |
