본문 바로가기
목차
Linux

[Linux] ln: link command

by ds31x 2025. 6. 8.
728x90
반응형

https://m.blog.naver.com/sosangel86/222038289079

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.txthardlink.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.txtfile.txt를 참조하는 링크이며, 수정 시 원본 파일이 변경됨.


3. 비교: Hard Link vs Symbolic Link

항목 Hard Link Symbolic Link
참조 대상 파일의 inode (실제 내용) 파일 또는 디렉토리의 경로 (문자열)
inode 번호 원본과 동일 원본과 다름
수정 반영 어느 쪽을 수정해도 모두 반영됨 원본을 수정해야 반영됨
원본 삭제 시 다른 하드 링크가 남아 있으면 내용 유지 링크가 끊어진 상태(broken link)가 됨
디스크/파티션 제한 같은 파일시스템 내에서만 가능 다른 파일시스템이나 디스크도 가능
디렉토리 링크 일반적으로 불가능 (루프 방지 목적) 가능
주 용도 백업, 디스크 공간 절약, 파일 다중 참조 설정 연결, 버전 스위칭, 경로 단축 등
생성 명령 ln 원본 대상 ln -s 원본 대상

4. 삭제

Hard link나 Symbolic link 모두 삭제할 때는 unlinkrm 명령을 사용.

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