한 파일이 두 자리에 있는 두 방법
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 로 처리해서 저렴하게 만들어.