[개념]

간단하게 설명하자면 하드링크는 동일한 파일에 다른 이름을 붙히는 것입니다. 심볼릭 링크는 바로가기 입니다.

원본 파일의 하드링크를 만들었을 때 이 둘은 동일한 파일이기 때문에 하나를 변경하는 것은 둘 모두를 변경하는 것과 같습니다. C++의 참조자라고 생각하면 좋겠네요. 하드링크는 동일한 변수를 서로다른 이름으로 부르는 C++의 참조자와 비슷합니다. 대용이라는 친구가 있고 별명이 빅드래곤이라고 가정한다면 대용이라고 부르던 빅드래곤이라고 부르던 동일한 사람을 부르는 것이죠. 마찬가지로 /home/sinsisao/test.original이라는 파일과 그 하드링크인 /home/sinsisao/UbuntuStudy/test.hardlink가 있다면 경로나 파일 이름은 다르지만 둘은 동일한 데이터 블록을 가진 동일한 파일을 칭하는 것입니다. 한 가지 유의할 점은 둘중 하나를 삭제한다는 것의 의미가 파일의 삭제가 아닌 하드링크의 삭제라는 것입니다. 사용하던 이름 하나를 없애는거라고 생각하시면 쉽게 이해가 될듯합니다. 어떤 경우에 하드링크를 주로 사용하는지는 잘 모르겠습니다. 예상해보건데 아마 백업용으로 사용하지 않을까 싶네요.

+ 디렉터리의(폴더의) 하드링크를 만들 수 없습니다.

+ 다른 디스크에 하드링크를 만들 수 없습니다. 예를 들어 C드라이브에 있는 파일의 하드링크를 D드라이브에 만들 수 없습니다. 이유는 잘 모르겠습니다.

 

심볼릭 링크는 "윈도우 바로가기 만들기"의 바로가기와 비슷합니다. 말그대로 특정 경로의 파일을 가리킵니다. 해당 파일이 삭제되거나 다른 경로로 이동된다면 바로가기를 사용할 수 없습니다. 사용예로는 하드디스크를 /mnt/hdd와 같은 곳에 마운트한 후 본인의 home에 심볼릭 링크를 만들어 이용할 수 있겠습니다.

또, 잘 알진 못하지만 alternatives 라는 것에서 사용하는듯 합니다. alternatives의 대략적인 개념은 test2.2test3.3 식으로 test라는 프로그램의 2.2버전과 3.3버전 바이너리를 모두 가지고 있을 때, 사용하고자하는 버전 바이너리의 심볼릭 링크를 test 라는 이름으로 만들어서 쓰는 겁니다. 아마 맞을걸요...

+ 디렉터리의 심볼릭링크를 만들 수 있습니다.

+ 다른 디스크에 심볼릭링크를 만들 수 있습니다.

 

[사용]

// hard link
ln xxx yyy
// symbolic link
ln -s xxx yyy

하드링크, 심볼릭 링크 모두 ln 이라는 동일한 명령어를 사용해서 만듭니다. 다만, symbolic link 의 경우 -s 옵션을 줍니다. xxx 는 원본 파일을 의미하고 yyy는 새로 생성할 링크 파일을 의미합니다.

'개발 > linux' 카테고리의 다른 글

[기초편] Shell 이란?  (0) 2020.08.24
vi 사용법  (0) 2020.06.16
리눅스 명령어 약자 확인하기  (0) 2020.05.28
우분투 터미널 명령행에서 쓰던 단어, 행 지우는 단축키  (0) 2020.05.14
유용한 링크 모음  (0) 2020.05.10

+ Recent posts