320x100

cp 명령으로 만들어진 파일은 파일 데이터 전체가 복사가 됩니다. 곧 원본 파일이 64KB의 공간을 차지 했었다면 복사되는 파일시스템에 64KB의 공간을 더 차지하게 되는 것입니다. 이 두 파일은 개별적이고 독립적이라 복사된 후에는 서로에게 아무런 영향을 미치지 않습니다.

하드링크는 겉으로 보기엔 cp와 별반 다른 게 없는 것 같습니다만 단지 그 파일의 데이터를 참조할 수 있는 디렉토리 엔트리만을 하나 더 만드는 것입니다. 예를 들어 a라는 파일을 하드링크하여 b를 만들게 되면 a를 편집한 후 b를 열었을 때에도 편집이 되어있게 됩니다. 한 마디로 양 쪽 다 같은 데이터를 가리키고 있다는 얘기죠. 단 이 것은 심볼릭링크와는 엄연히 다릅니다. 하드링크는 "원본"이란 개념이 없습니다. 위와 같이 b가 생성된 상태에서 원래 있었던 a 파일을 삭제(unlink)하여도 그 데이터를 아직 가리키고 있는 b가 존재하기 때문에 데이터는 지워지지 않습니다. 그리고 또한 하드 링크는 동일한 파일시스템(UFS, EXT 등) 내에서만 생성될 수 있습니다.

심볼릭링크란 위와 같이 같은 데이터를 가리킨다고 보면 됩니다만, 엄격히 따져보면 단지 대상 엔트리만을 "참조"한다고 봐야합니다. 데이터와는 무관하게 특정한 디렉토리 엔트리만을 참조하는 것이죠. 이 점은 매우 중요합니다. 왜냐하면 때에 따라서 존재하지도 않는 디렉토리 엔트리를 참조하기도 하니깐요. 디렉토리 엔트리에서 파일 속성을 보아도 위 두 경우와는 달리 심볼릭링크임을 뜻하는 l을 (8진수로 0120000) 확인할 수 있습니다. 심볼릭링크는 또한 다른 파일시스템에 존재하는 엔트리를 참조할 수도 있답니다.

320x100

'리눅스' 카테고리의 다른 글

환경변수 지역변수  (0) 2009.06.21
sub shell  (0) 2009.06.21
shell script  (0) 2009.06.21
디렉토리 구조  (0) 2009.06.01
tar  (0) 2009.05.24

+ Recent posts