Linux

[Linux] 하드링크와 소프트링크(심벌릭 링크)

worldcenter 2025. 5. 6. 23:42

 

하드링크와 소프트링크(심벌릭 링크) 란?

  • 하드 링크는 하나의 파일을 2개의 이름으로 사용하기 위해 기존 파일의 새로운 이름을 만드는 것 입니다.
  • 소프트 링크(심벌릭 링크)는 원본 파일을 가리키는 '바로가기' 목적의 파일입니다.

 

 

하드 링크의 특징

  • 하드 링크는 하나의 파일에 다른 이름을 부여하는 것 입니다. 하나의 파일을 다른 이름으로도 다룰 수 있게 하는 것 입니다.
  • 하드 링크를 만들면 원본 파일(또는 하드 링크)의 링크 카운트가 증가합니다. 
# 하드 링크 전(Before)
-rw-rw-r-- 1 ubuntu ubuntu   19 May  6 13:12 file.txt

# 하드 링크 후(After)
ln file.txt file_hard.txt

-rw-rw-r-- 2 ubuntu ubuntu   19 May  6 13:12 file.txt # 링크 카운트가 2로 증가
-rw-rw-r-- 2 ubuntu ubuntu   19 May  6 13:12 file_hard.txt
  • 실제 원본 파일과 하드 링크는 똑같은 것이며, 무엇이 원본인지 알 수 없습니다.
# 파일의 식별자 역할을 하는 inode 번호가 동일하기 때문에 원본 구분이 불가
258133 -rw-rw-r-- 2 ubuntu ubuntu   19 May  6 13:12 file.txt
258133 -rw-rw-r-- 2 ubuntu ubuntu   19 May  6 13:12 file_hard.txt
  • 하드링크를 삭제하면 링크 카운트가 감소합니다.
# 하드 링크를 삭제하면 링크 카운트 감소
258133 -rw-rw-r-- 1 ubuntu ubuntu   19 May  6 13:12 file.txt
  • 파일 시스템이 다르면 하드 링크를 만들 수 없습니다. 파일 시스템 마다 inode 테이블이 분리되어 있어 inode 충돌이 발생할 수 있기 때문에 하드 링크는 사용 불가능 합니다.
# /home은 ext4, /mnt/usb는 FAT32 라고 가정
ln /home/user/file.txt /mnt/usb/file_link.txt

# 오류 발생
# ln: failed to create hard link '/mnt/usb/file_link.txt': Invalid cross-device link

 

 

소프트 링크(심벌릭 링크)의 특징

  • 심벌릭 링크는 윈도우의 '바로가기'와 같이 다른 파일을 가리키는 역할을 하는 파일입니다.
258133 -rw-rw-r-- 1 ubuntu ubuntu   19 May  6 13:12 file.txt
258485 lrwxrwxrwx 1 ubuntu ubuntu    8 May  6 13:11 link.txt -> file.txt
  • 심벌릭 링크는 원본 파일 경로만 가리키기 때문에 파일 시스템이 달라도 만들 수 있습니다.
  • 심벌릭 링크를 삭제하는 것은 링크만 삭제하는 것 입니다.
  • 원본을 삭제하거나 다른 디렉터리로 이동시키면 심벌릭 링크는 의미 없어 집니다.
  • 디렉터리의 경우는 하드 링크를 만들 수 없고 심벌릭 링크만 가능합니다.
# 디렉터리 심벌릭 링크의 경우
ln -s direc direc_link
drwxrwxr-x 2 ubuntu ubuntu 4096 May  6 14:37 direc
lrwxrwxrwx 1 ubuntu ubuntu    5 May  6 14:37 direc_link -> direc

# 디렉터리 하드 링크의 경우
ln direc direc_hard
# ln: direc: hard link not allowed for directory