C.W.K.
Stream
Lesson 09 of 12 · published

Symbolic Link 과 Hard Link

~13 min · symlink, hard-link, ln

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

한 파일이 두 자리에 있는 두 방법

Unix 는 하나의 파일을 여러 경로에 띄울 수 있어. 메커니즘 둘, semantic 은 완전히 달라:

  • Hard link — 같은 inode 를 가리키는 두 번째 이름. 둘은 동등. 하나 삭제해도 다른 이름이 있으면 데이터는 살아 있어. 파일 시스템 넘을 수 없음.
  • Symbolic link (symlink) — 내용이 경로 문자열인 작은 파일. OS 가 투명하게 따라가. 대상이 이동 / 삭제되면 dangling.

Link 만들기

  • ln source link — hard link.
  • ln -s source link — symbolic link. 거의 항상 이거 쓰게 돼.

-s 빼먹으면 조용히 hard link 가 만들어져. 대부분 개발자가 반사적으로 -s 넣어.

Link 알아보기

ls -l 은 symlink 를 화살표로 보여줘: link -> /target/path. Hard link 는 일반 파일과 똑같이 보여. ls -i 의 inode 번호가 같으면 hard link. stat link 가 둘 다 진실 알려줌.

각자의 자리

  • Symlink — 기본. 파일 시스템 넘기 가능, 경로를 가리킴, 디렉터리도 OK. Homebrew, dotfile 관리자, 패키지 매니저가 활용.
  • Hard link — 같은 데이터를 가리키는 두 안정적 reference 가 필요할 때 (같은 fs 안). Time Machine 이 스냅샷 사이의 안 바뀐 파일을 공유할 때 hard link 로 처리해서 저렴하게 만들어.

Code

둘 다 만들고 확인·bash
echo 'hi' > original.txt
ln    original.txt hard.txt    # hard link
ln -s original.txt soft.txt    # symlink
ls -li *.txt
rm original.txt
cat hard.txt        # still works — same inode
cat soft.txt        # error — dangling symlink
설정 파일을 홈에 symlink·bash
git clone git@github.com:me/dotfiles ~/dotfiles
ln -s ~/dotfiles/zshrc ~/.zshrc
ls -l ~/.zshrc

External links

Exercise

파일 하나 만들고, hard / soft link 각각 생성. ls -li 로 inode 비교. 원본 삭제 후 양쪽 link 동작 확인 — hard 는 살고 soft 는 깨지는 거 직접 보기.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.