초코레

하드 링크와 소프트 링크 본문

Linux

하드 링크와 소프트 링크

초코레 2020. 7. 14. 00:37

cp로 1MB 사이즈인 A 파일을 B 파일로 복사하는 경우, A와 B는 각각 물리적으로 10MB 파일로 저장된다.

 

하드 링크

  • 복사할 파일과 하드 링크된 파일은 동일한 실제 데이터를 가리킨다.
  • 동일한 파일을 가진 이름을 하나 더 만든 것이며 inode는 동일하다.
  • 전체 파일 용량은 달라지지 않는다.
    • 만약 A의 내용을 변경하면 B도 같은 물리 공간을 가리키고 있기 때문에 B의 내용을 확인하면 동일하게 변경되어 있다.
    • 또한 A를 삭제할 경우(rm) 아직 물리 데이터를 가리키고 있는 B가 남아있기 때문에 실제 데이터는 삭제되지 않고 A : inode 정보만 삭제된다. B는 여전히 실제 데이터를 가리키고 있는 상태이므로 남아있다.
  • 하드 링크를 사용하는 이유 : 저장 공간을 절약할 수 있다.
ln A B

소프트(심볼릭) 링크

  • 윈도우즈 OS의 바로가기와 동일하게 원본 파일이 삭제된 상태에서 바로가기를 누르면 찾을 수 없는 것과 같다.
  • 하드 링크/소프트 링크 둘다 어느 하나 파일을 수정하면, 각 파일이름으로 동일한 내용으로 접근 가능하나 rm으로 원본을 삭제하면 하드 링크한 파일은 접근 가능하나 소프트 링크한 파일은 접근 불가하다.
  • 소프트 링크한 파일은 원본 파일의 inode 값과 다르다. 
    • 소프트 링크한 파일의 inode가 가리키는 주소는 원본이 가리키는 실제 물리 주소의 간접 주소이다.
ln ‑s A B

ls ‑al
lrwxr-xr-x link3.txt -> link2.txt
→ 링크파일이기 때문에 앞 문자가 l로 나타난다. 참고로 하드링크는 별도 파일로 보기 때문에 -로 나타낸다.