하드링크란?
- 같은 아이노드 테이블(디스크에 물리적인 블록)을 갖는 완전히 같은파일이 두곳에 동시에 존재하게끔 도와주는 OS 고유 기능인데, 하나의 repo에 2개의 하드링크 파일을 생성하면 총 3개의 파일이 존재하고(원본파일1 + 하드링크2개) 3가지 파일의 inode 는 동일한데요
- 이 상태에서 git push 후, 다른곳에서 clone 하게 되면 inode파일이 각기 다른것을, 즉 전혀 별개의파일 3개로 인식됨을 알수 있습니다.
결국 git으로 관리되는 repository에서는 hardLink 기능을 사용하지 않는걸 권장합니다.
- 설명 : 노란색의 co-work 에서는 3개의 파일이 각각 inode가 다른반면(~97,~98,~99) , 초록색의 로컬저장소 workspace 에서는 inode가 1612075 로 완전히 동일하다. 즉 같은 파일이라는 의미
TMI : 파일시스템과 아이노드테이블
- fileSystem 이라고 부르는 fileTree, 그러니까 / (루트 디렉토리) 아래 /usr이 있고, /sbin이 있고, /user/home/~ 각각의 계정사용자들 폴더가 있는 이런 tree 구조의 파일시스템은 디스크에 저장되어 있고
- 디스크 저장공간은 PC 입장에서 접근할때는 긴 일차원 배열형태라서, 1차원 배열의 실제 디스크의 물리적인 공간과, tree 구조의 filesystem을 번역해주는(mapping) 기술이 파일시스템 입니다.
- 좀더 구체적으로는 FAT, NTFS, EXT4, AFPS ... 이라는 이름들로 구현되어있는 기술들은 내부적으로 inode table 이라는걸 사용해 1차원의 물리적인 배열의 선형 자료구조 저장공간에서 tree 형태의 비선형 자료구조 저장공간으로의 변환해줍니다.