KWMBLOG

링크를 걸어주는 명령어 - ln 본문

리눅스/명령어

링크를 걸어주는 명령어 - ln

KWMBLOG 2018. 11. 30. 15:47

ln : 파일에 링크를 걸어주는 명령어, 기본값으로 하드링크를 걸어준다

옵션

  • -s : 심볼릭(Symbolic)링크를 걸 때 사용하는 옵션이다.


unlink : 심볼릭 링크를 해제하는 명령어이다.




여기서 심볼릭링크, 하드링크에 대한 것을 알아보고 넘어간다.


하드링크 : 링크로 접근을 하거나 원본에서 파일의 내용을 수정하였다면

원본과 하드링크가 걸려있는 파일 모두 수정되어 항상 같은 내용을 유지한다.

각각 다른 개체로 인식한다.


심볼릭 링크 : 다른 파일의 경로를 가리키는 파일이기 때문에 실제로 

접근을 하거나 수정을 하면 원본파일을 수정하는 것이기 때문에 같은 내용으로 유지하는 것 처럼 보인다.

같은 개체로 인식한다.


무슨말인지는 아래 예제로 보면 된다.





우선 하드링크에 대한 예제이다.

하드링크는 별다른 옵션없이

ln 원본파일 파일이름

이런 형식으로 사용한다.


1이라는 파일을 2라는 파일로 하드링크를 걸어준다.

1의 내용을 수정해 주고 cat으로 1, 2의 내용을 확인한다.


같은 내용으로 변경되어있음이 확인된다.

반대로 해도 마찬가지이다.



위에서 하드링크는 각각의 개체로 인식한다고 했다.

이미지를 보면 원본파일인 1 파일을 삭제했다.

하드링크 파일인 2 파일은 그대로 남아있고 내용도 그대로 남아있다.




다음은 심볼릭 링크이다.

1이라는 파일에

ln -s 원본파일 파일이름

으로 심볼릭 링크를 걸어준다.


그 후 하드링크에서 했던 테스트를 그대로 진행한다.

결과는 하드링크 테스트와 똑같지만 파일의 생김새가 조금 다르다.


다음 설명에서 같은 내용으로 "유지하는 것처럼 보인다" 라고 적은 이유와 "같은 개체라고 인식한다"

라고 했던 이유를 알게된다.



여기서 원본파일인 1파일을 삭제한다.

그러면 갑자기 2 파일의 이름이 빨간색이 되고 

옆에서 1이 깜빡거리기 시작한다.


그리고 cat으로 2의 내용을 보면 파일이 없다고 한다.

(눈앞에 보이는데 어디서 구라를)


여기서 "유지하는 것처럼 보인다" 와 

"같은 개체로 인식한다" 라는게 나온다.


이 경우 원본이 없어지면 쓰레기 파일이 된다.

이상태에서 다시 2파일을 생성하려고 하면 

뜬금없이 1파일이 생성이 된다.


이렇게 되는 이유는 2 파일이 1파일을 보고 있기 때문이고,

위 예제에서 없는파일 취급당한것은 1 파일이다.


그래서 2파일을 생성하면 심볼릭 링크가 걸려있는 1파일로 생성이 되고,

자동으로 다시 연결이 된다.





다음은 링크를 해제해주는 명령어이다.

unlink 링크파일명

으로 입력해주면 된다.


일반 파일에도 적용이 된다.

(사실 이건 방금알았다.)


rm -rf 로 링크된 파일을 삭제할 수도 있지만

 실수라도 하게 되면

 원본이 날아가는 참사가 일어날 수도 있으니

 될수있으면 unlink로 작업해야 한다.




위에서도 말했듯이 심볼릭 링크는

될수있으면 unlink로 해제해야 한다.

예를들어 아파치 conf 파일을 심볼릭 링크를 걸어놨는데,

잘못해서 원본이 날아갔고, 백업본도 없다면 어떻게 될까?

(물론 날려먹어 본적이 있다.)


3줄 요약

ln 은 하드링크, 심볼릭 링크를 걸어주는 명령어이다.

하드링크는 실시간동기화 되고 다른 개체의 개념, 심볼릭 링크는 척만하고 같은 개체의 개념

unlink 안쓰고 rm -rf 쓰면 경우에 따라 실직의 위기가 올 수도 있다.


Comments