728x90
반응형

ln은 file이나 directory에 대한
링크(link) 를 만드는 명령어.
ln으로 만들어진 link는
- 기존 파일을 새로 복사하지 않고,
- 다른 이름이나 위치에서 동일한 파일에 접근할 수 있도록 해 줌.
ln에는 두 가지 주요 형태가 있습니다:
- hard link: 파일 내용(inode) 자체에 대한 또 하나의 이름을 생성
- symbolic link: 파일 경로(path) 를 가리키는 참조 파일을 생성
1. Hard Link (ln)
1-1. 정의
Hard link 는 파일 시스템에서 같은 inode를 공유하는 또 다른 이름 임: alias!
- 동일한 파일 내용에
- 두 개 이상의 이름이 연결되는 것.
1-2. 특징
- 원본 파일과 동일한 inode 번호 를 가짐: (soft link와 차이점)
- 원본이나 링크 중 어떤 것을 수정해도 내용은 동일하게 반영됨
- 파일 이름 중 하나를 삭제해도, 나머지가 존재하면 내용은 삭제되지 않음: (soft link와 차이점)
- 같은 disk 내에서만 생성 가능: (soft link와 차이점)
- 일반적으로 directory 에 대해서는 hard link를 만들 수 없음: (soft link와 차이점)
1-3. 예제
echo "hello" > file.txt
ln file.txt hardlink.txt
ls -li
이 명령을 통해
file.txt와hardlink.txt는 동일한 inode를 공유함.- 즉, 사실상 하나의 파일이 두 개의 이름으로 존재.
2. Symbolic Link (ln -s)
2-1. 정의
Symbolic link는 다른 파일이나 디렉토리의 경로를 담고 있는 "바로가기" 에 해당.
2-2. 특징
- Symbolic link 자체는 별도의 inode를 가지나, 그 안에 원본의 path를 저장(pointer)함.
- Symbolic link를 통해 접근할 때마다 원본의 path로 원본에 접근
- 때문에 원본이 삭제되면 Symbolic link는 "broken link"가 됨
- 다른 파일시스템에도 생성 가능
- 디렉토리에 대해서도 symbolic link를 만들 수 있음
2-3 예제
ln -s file.txt symlink.txt
ls -l
출력:
symlink.txt -> file.txt
symlink.txt는 file.txt를 참조하는 링크이며, 수정 시 원본 파일이 변경됨.
3. 비교: Hard Link vs Symbolic Link
| 항목 | Hard Link | Symbolic Link |
| 참조 대상 | 파일의 inode (실제 내용) | 파일 또는 디렉토리의 경로 (문자열) |
| inode 번호 | 원본과 동일 | 원본과 다름 |
| 수정 반영 | 어느 쪽을 수정해도 모두 반영됨 | 원본을 수정해야 반영됨 |
| 원본 삭제 시 | 다른 하드 링크가 남아 있으면 내용 유지 | 링크가 끊어진 상태(broken link)가 됨 |
| 디스크/파티션 제한 | 같은 파일시스템 내에서만 가능 | 다른 파일시스템이나 디스크도 가능 |
| 디렉토리 링크 | 일반적으로 불가능 (루프 방지 목적) | 가능 |
| 주 용도 | 백업, 디스크 공간 절약, 파일 다중 참조 | 설정 연결, 버전 스위칭, 경로 단축 등 |
| 생성 명령 | ln 원본 대상 |
ln -s 원본 대상 |
4. 삭제
Hard link나 Symbolic link 모두 삭제할 때는 unlink나 rm 명령을 사용.
unlink link.txt
rm link.txt
주의: 모두 link 자체만 삭제하고, 원본 내용은 삭제하지 않음.
5. Examples
# 원본 생성
echo "hello" > original.txt
# 하드 링크 생성
ln original.txt hard.txt
# 심볼릭 링크 생성
ln -s original.txt sym.txt
# 확인
ls -li
# 원본 삭제 후 테스트
rm original.txt
cat hard.txt # 정상 출력
cat sym.txt # 오류: broken link
6. Hard link의 완전 삭제 조건
Hard link가 가리키는 inode(파일 내용)는 해당 inode를 참조하는 링크 수가 0이 될 때만 실제로 삭제됨.
Hard link가 하나라도 남아 있다면
file은 살아 있음: inode 존재.
stat hard.txt
# Link count: 2
7. Recommended Use Case
| Use Case | Recommended Link |
| 파일을 복제하지 않고 여러 이름으로 관리 | Hard Link |
| 설정 파일을 여러 위치에서 공유 | Symbolic Link |
| 다른 디스크의 파일 연결 | Symbolic Link |
| 디렉토리 바로가기 (shortcut) | Symbolic Link |
8. 기타
ls -li # inode 번호 확인
readlink symlink.txt # 링크가 가리키는 대상 출력
find . -xtype l # 끊어진 심볼릭 링크 찾기728x90
'Linux' 카테고리의 다른 글
| [Ubuntu] /var/lib/apt/lists 디렉터리의 용도 (1) | 2025.08.10 |
|---|---|
| APT Pinning (2) | 2025.08.10 |
| [Linux] scp: Secure Copy Protocol (1) | 2024.12.26 |
| [Linux] cron and crontab (0) | 2024.06.27 |
| [linux] find 사용법. (0) | 2024.05.11 |