[개념]
간단하게 설명하자면 하드링크는 동일한 파일에 다른 이름을 붙히는 것입니다. 심볼릭 링크는 바로가기 입니다.
원본 파일의 하드링크를 만들었을 때 이 둘은 동일한 파일이기 때문에 하나를 변경하는 것은 둘 모두를 변경하는 것과 같습니다. C++의 참조자라고 생각하면 좋겠네요. 하드링크는 동일한 변수를 서로다른 이름으로 부르는 C++의 참조자와 비슷합니다. 대용이라는 친구가 있고 별명이 빅드래곤이라고 가정한다면 대용이라고 부르던 빅드래곤이라고 부르던 동일한 사람을 부르는 것이죠. 마찬가지로 /home/sinsisao/test.original이라는 파일과 그 하드링크인 /home/sinsisao/UbuntuStudy/test.hardlink가 있다면 경로나 파일 이름은 다르지만 둘은 동일한 데이터 블록을 가진 동일한 파일을 칭하는 것입니다. 한 가지 유의할 점은 둘중 하나를 삭제한다는 것의 의미가 파일의 삭제가 아닌 하드링크의 삭제라는 것입니다. 사용하던 이름 하나를 없애는거라고 생각하시면 쉽게 이해가 될듯합니다. 어떤 경우에 하드링크를 주로 사용하는지는 잘 모르겠습니다. 예상해보건데 아마 백업용으로 사용하지 않을까 싶네요.
+ 디렉터리의(폴더의) 하드링크를 만들 수 없습니다.
+ 다른 디스크에 하드링크를 만들 수 없습니다. 예를 들어 C드라이브에 있는 파일의 하드링크를 D드라이브에 만들 수 없습니다. 이유는 잘 모르겠습니다.
심볼릭 링크는 "윈도우 바로가기 만들기"의 바로가기와 비슷합니다. 말그대로 특정 경로의 파일을 가리킵니다. 해당 파일이 삭제되거나 다른 경로로 이동된다면 바로가기를 사용할 수 없습니다. 사용예로는 하드디스크를 /mnt/hdd와 같은 곳에 마운트한 후 본인의 home에 심볼릭 링크를 만들어 이용할 수 있겠습니다.
또, 잘 알진 못하지만 alternatives 라는 것에서 사용하는듯 합니다. alternatives의 대략적인 개념은 test2.2 와 test3.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 |