10. Create and Manage Hard Links
파일 시스템 기본 개념
Linux의 모든 파일은 inode로 표현됩니다 — 권한, 수정 시간, 데이터 블록 위치 등의 메타데이터를 저장하는 데이터 구조입니다. inode 번호가 기술적 참조 역할을 하고, 파일명은 이 inode에 매핑됩니다.
family_dog.jpg 같은 파일을 생성하면 stat 명령어로 inode 세부 정보를 확인할 수 있습니다. "Links: 1"은 하나의 하드 링크(원본 파일명)가 존재함을 나타냅니다.
하드 링크 생성 및 사용
하드 링크를 사용하면 콘텐츠를 복제하지 않고 여러 디렉토리 항목이 동일한 파일 데이터를 참조할 수 있습니다. 디스크 공간을 절약하면서 사용자 간 데이터를 공유할 때 유용합니다.
Aaron의 사진 디렉토리를 Jane의 위치에 복사하면 데이터가 중복되지만, 하드 링크를 생성하면 그렇지 않습니다:
ln /home/aaron/Pictures/family_dog.jpg /home/jane/Pictures/family_dog.jpg
이 명령어 실행 후 두 경로 모두 동일한 inode를 참조하며, stat 출력에 "Links: 2"가 표시됩니다.
하드 링크 삭제
한 사용자가 파일에 대한 참조(하드 링크)를 삭제해도 다른 링크를 통해 데이터에 접근할 수 있습니다. 마지막 하드 링크가 삭제될 때만 파일 데이터가 제거됩니다.
하드 링크와 권한 관리
하드 링크는 동일한 inode를 공유하므로, 하나의 링크에서 권한을 수정하면 모든 링크에 영향을 미칩니다. 그룹 멤버십과 파일 권한을 조정하여 사용자 간 일관된 접근을 보장하세요.
하드 링크의 제한 사항
두 가지 주요 제약이 있습니다:
- 하드 링크는 파일에만 적용되며, 디렉토리에는 적용 불가
- 하드 링크는 동일한 파일시스템 내에 있어야 함
다른 파일시스템이나 디렉토리에 하드 링크를 생성하려 하면 오류가 발생합니다.