본문 바로가기
반도체 그 다음 학문/Linux

Linux Link ( soft link, hard link, 링크, ln, ln -s, 차이점 )

by 전컴반 2022. 3. 23.
반응형
Link

 

Link에는 2가지 종류가 있다 soft, hard link가 존재하는데 soft link는 window에서 바로가기와 같다.

하나씩 알아보자, 

 

먼저 tmp라는 폴더를 만들고 그 안 test.txt 파일을 만들어줬다.

그리고 그 파일에 softlink를 걸어주는데 link를 걸어주는 명령어는 ln으로 -s 옵션을 줘야 softlink다.

(+ default는 hard link다.) 

 

아래 보면 test.txt 파일을 softlink라는 이름의 바로가기를 만들었다.

 

 

ls -l로 확인해보면 softlink라는 이름은 text.txt랑 이어져 있다고 나온다. 그리고 파일 권한을 보면 d가 아니라 l이라고 제일 앞에 있다.

이게 바로 symbol link라는 의미를 표시한다. 그리고 link 숫자가 1로 돼 있다. 원래 모든 파일을 만들면 자기 자신과 link 돼 있어서 1이 기본인데 soft link는 link 숫자에 영향을 주지 않는다.

 

 

hard link를 만들어 보자.

파일 권한을 보면 제일 앞에 l이 아니라 -로 표시돼 있다. 이게 soft와 hard의 차이다. 그리고 hard link에서 link 숫자가 2로 돼 있다. 즉 link 숫자에 영향을 준다는 의미다.

 

 

빈 파일이었던 test.txt 파일에 testing links라는 내용을 집어넣는다. 그리고 확인해보면 hard link, soft link에 모두 같은 내용이 들어간 걸 확인할 수 있다. 

다음으로 hard link를 하나 더 만들고 ls -l을 확인해보면 , link의 숫자가 2에서 3으로 늘어나는 걸 볼 수 있다. 이 말은 원본 파일에 연결된 hard link의 숫자가 늘었다는 의미다.

 

 

그다음에 test line 2라는 내용을 text.txt에 추가한다 >>는 추가한다는 의미다. 그리고 내용을 확인해보면 역시 soft link, hard link 다 잘 들어가 있는 걸 확인할 수 있다.

 

다음으로 subdir이라는 폴더를 만들고 원본 파일은 test.txt를 subdir로 옮겨 보고 ls를 이용해 확인해 보니,

soft link가 빨간색으로 깨져 있는 걸 확인할 수 있다. softlink의 내용을 확인해보면 파일이 없다고 뜬다. 즉, 원본 파일을 지우거나 옮기면 바로가기는 깨진다. 

하지만 hard link는 다르다. 그대로 존재한다. 이게 soft link와 hard link의 차이점이다. 즉, 원본이 이동해도 그대로 유지한다.

 

 

그렇다면 원본을 삭제하면 어떻게 될까?? 

삭제했음에도 불구하고 hard link는 사라지지 않았다. 하지만 link의 수는 3에서 2로 줄었다. 그럼 복사해서 저장하는 것인가?? 이것도 아니다. 삭제를 했음에도 불구학 hard link로 연결돼 있는 파일이 존재하면 완전히 삭제하지 않는다. 다만 link의 수만 줄어든다.

완전히 지우고 싶다면 hard link까지 다 지워야 온전히 사라진다.

 

 

이것이 hard link와 soft link의 차이점이다.

반응형

댓글