728x90
반응형

리눅스를 처음 접하면 ln 명령어로 링크 파일을 만들라고 할 때 막막하다.
"하드링크? 심볼릭링크? 뭐가 다르지?" "파일을 가리키는 방식이 왜 두 종류나 필요하지?"
이번 글에서는 리눅스의 inode 구조를 바탕으로
하드링크와 심볼릭링크의 차이를 직관적으로 이해하고,
직접 실습해보며 정리해본다.
inode란 무엇인가?
리눅스에서 파일은 데이터 자체와 그에 대한 메타정보가 나뉘어 저장된다.
이 때, 메타정보를 담고 있는 것이 바로 inode (index node) 이다.

inode에는 다음 정보가 담겨 있다:
- ✔️ 파일의 실제 위치 (데이터 블록 주소)
- ✔️ 파일 크기
- ✔️ 생성/수정/접근 시간
- ✔️ 퍼미션, 소유자, 그룹
- ✔️ (❌ 파일명은 포함되어 있지 않다!
즉, 파일명은 디렉토리 엔트리에만 있고, 진짜 본체는
inode다!
하드링크 vs 심볼릭링크 한눈에 비교
| 구분 | 하드링크 (Hard Link) | 심볼릭링크 (Symbolic Link) |
|---|---|---|
| 구조 | 동일 inode를 참조 | 별도 파일, 원본 경로를 문자열로 저장 |
| 삭제 영향 | 원본 삭제해도 하드링크는 유지됨 | 원본 삭제 시 broken link 됨 |
| 파일 크기 | 동일 | 링크 파일은 몇 바이트의 문자열 |
| 위치 제한 | 같은 파일시스템만 가능 | 파일시스템 상관 없음 |
| 명령어 | ln | ln -s |
링크 파일 만들어보기
원본 파일 만들기
echo "Hello Inode" > original.txt
ls -li original.txt결과 예시:
1234567 -rw-r--r-- 1 user user 13 May 29 11:00 original.txt
1234567 → 바로 이게 inode 번호!
하드링크 만들기
ln original.txt hardlink.txt
ls -li1234567 -rw-r--r-- 2 user user 13 May 29 11:00 hardlink.txt
1234567 -rw-r--r-- 2 user user 13 May 29 11:00 original.txt- ✔️ 두 파일이 같은 inode 번호를 가진다.
- ✔️ 내용이 완전히 동일하고, 어느 쪽을 수정해도 서로 반영된다.
심볼릭링크 만들기
ln -s original.txt symlink.txt
ls -li7654321 lrwxrwxrwx 1 user user 13 May 29 11:05 symlink.txt -> original.txt- ✔️ inode 번호가 다르다
- ✔️ 단지 원본 파일명을 가리키는 포인터일 뿐이다
원본을 지우면?
rm original.txt
cat hardlink.txt # 여전히 정상 출력됨
cat symlink.txt # 오류: No such file or directory
하드링크는 진짜 복사,
심볼릭링크는 주소만 기억하는 지름길 같은 개념이다.
정리
| 항목 | 하드링크 | 심볼릭링크 |
|---|---|---|
| 같은 inode 번호 | ✅ | ❌ |
| 원본 삭제 시 유지됨 | ✅ | ❌ |
| 파일시스템 제약 | O (같은 디바이스) | X (경로만 저장) |
| 실제 데이터 복사 아님 | ✅ | ✅ |
| 디렉토리 링크 가능 | ❌ (일반적으론 제한됨) | ✅ |
마무리
리눅스는 파일명이 곧 파일이 아니다.
inode와 디렉토리 구조를 분리해놓은 덕분에 하드링크 같은 기법이 가능하게 된다.
단순히
ln,ln -s를 외우기보다는,
파일이 어떻게 저장되고 연결되는지를 inode 관점에서 이해하면 더 오래 기억된다.
728x90
반응형
'linux' 카테고리의 다른 글
| [리눅스 SSH 접속] RSA 키페어로 인증하는 방법 (feat. Mac → Ubuntu) (3) | 2025.06.02 |
|---|---|
| [리눅스 패키지 관리] apt? apt-get? (0) | 2025.05.29 |
| [리눅스 디스크 관리] linux disk 파티션, mount (1) | 2025.05.28 |
| [리눅스 프로세스 관리] ps와 kill 명령어 + 시그널까지 한 번에 정리하기 (0) | 2025.05.28 |
| [리눅스 명령어] linux tar 명령어 – 압축 및 해제 (0) | 2025.05.28 |