시스템 프로그래밍 - 5. 하드링크와 소프트링크

Walker·2021년 11월 12일
0
post-thumbnail

cp : cp 원본 복사본
원본파일을 원하는 복사본 이름으로 복사
(-rf 옵션과 함께 주로 사용 / r : recursive, f : 강제(Y))

ln(엘엔 - 아이엔 아님!) : ln 원본 링크
파일에 대한 링크를 생성

ln(하드링크)는 같은 inode(같은 파일)의 접근 방법이 하나 더 늘어나는 것
cp는 새로운 inode(새로운 파일)을 만드는 것

ls -i(i : inode 확인)로 확인해보면
원본(test)과 하드링크(hard)는 inode가 같은 것을 확인 할 수 있지만
원본과(test)와 복사본(testcp)는 inode가 다르다.
(testcp를 수정해도 test와 hard에는 영향이 없다.)

윈도우에서는 원본을 지우면 링크에서 접근이 안됨(원본 데이터가 지워짐)
하지만 리눅스에서는 하드링크의 경우 원본을 지워도 원본의 inode가 지워질 뿐(원본 데이터는 남는다)

왜 이런 하드링크를 쓸까?

만약 1학년 수학과 2학년 수학이라는 폴더에 각각 같은 수학참고파일.txt라는 파일이 필요할 때
cp를 사용한다면 불필요하게 같은 파일이 공간을 2배로 차지하게 된다.
이런 경우 하드링크를 사용하면 원본 파일의 크기를 그대로 유지하면서 각 폴더에서 사용 가능하다.

소프트링크 : -s 옵션으로 사용하는 링크
윈도우의 바로가기처럼 원본이 지워지면 소프트링크로는 접근이 안됨

소프트링크는 원본과 inode가 다르다
ls -al로 확인 시 "->" 표시로 어떤 파일의 링크인지도 표현된다.

소프트링크는 참조하는 data의 주소만을 가지고 있기 때문에
원본이 지워지면 참조 data를 불러 올 수 없다.

profile
I walk slowly, but I never walk backward. -Abraham Lincoln-

0개의 댓글