공든탑앱 열기

하드 링크와 심볼릭 링크

리눅스마스터 2급 · 파일 시스템 관련 명령어 · 약 12분

쉽게 말하면

파일에 바로가기를 만드는 두 방법이에요. 하드 링크는 같은 파일에 이름표를 하나 더 붙이는 것이라 원래 이름을 지워도 내용이 남아요. 심볼릭 링크는 '원본은 저기 있음'이라고 적은 쪽지라서 원본을 지우면 쓸모없어져요.

시험용 정의

하드 링크(ln 원본 링크)는 같은 inode에 이름을 하나 더 붙이는 것이고, 심볼릭(소프트) 링크(ln -s 원본 링크)는 원본의 경로를 담은 별도 파일(바로가기)이다.

비유로 이해하기

하드 링크는 한 사람에게 이름이 둘(본명과 예명) 있는 것, 심볼릭 링크는 "그 사람은 ○○동에 산다"라고 적힌 쪽지다. 이사 가면(원본 삭제·이동) 쪽지는 쓸모없어진다.

자세히

하드 링크 vs 심볼릭 링크

하드 링크 (ln)심볼릭 링크 (ln -s)
가리키는 것같은 inode원본의 경로(이름)
inode 번호원본과 같음다름
링크 수증가변화 없음
원본 삭제 시그대로 사용 가능깨짐
디렉터리불가가능
다른 파일시스템(파티션)불가가능
ls -l 표시일반 파일(-)과 같음l, 이름 -> 원본
크기원본과 같음경로 문자열 길이

시험에 이렇게 나와요

확인 문제

Q1. original.txt에 하드 링크 hard.txt와 심볼릭 링크 soft.txt를 만든 뒤 original.txt를 지웠다. 어떻게 될까?

  1. 둘 다 내용을 읽을 수 없다
  2. soft.txt는 읽히고 hard.txt는 깨진다
  3. 둘 다 멀쩡하다
  4. hard.txt는 읽히고 soft.txt는 깨진다
정답 보기

4번 hard.txt는 읽히고 soft.txt는 깨진다

하드 링크는 원본과 같은 inode(실제 데이터)를 가리키는 또 하나의 이름이라, 이름 하나를 지워도 데이터는 남는다. 심볼릭 링크는 원본의 경로 이름을 가리키는 바로가기라, 원본 이름이 사라지면 가리킬 곳이 없어 깨진다.

Q2. 하드 링크에 대한 설명으로 틀린 것은?

  1. 다른 파티션의 파일에도 만들 수 있다
  2. 만들면 링크 수가 늘어난다
  3. 원본과 같은 inode를 가진다
  4. 원본을 지워도 내용이 남는다
정답 보기

1번 다른 파티션의 파일에도 만들 수 있다

inode 번호는 파일시스템 안에서만 유효해 파티션을 넘을 수 없다.

Q3. /usr/local/bin/python을 가리키는 심볼릭 링크 py를 만드는 명령은?

  1. ln /usr/local/bin/python py
  2. ln -s /usr/local/bin/python py
  3. ln -h py /usr/local/bin/python
  4. ln -s py /usr/local/bin/python
정답 보기

2번 ln -s /usr/local/bin/python py

ln -s 원본 링크이름. 순서 주의.

Q4. 파일의 inode 번호를 확인하는 ls 옵션은?

  1. -l
  2. -n
  3. -a
  4. -i
정답 보기

4번 -i

-i다. 파일 이름 앞에 inode 번호를 보여 준다. 하드 링크는 inode 번호가 같다.

헷갈리기 쉬운 O·X

심볼릭 링크를 만들면 원본 파일의 링크 수가 1 늘어난다.

정답 보기

X 하드 링크만 늘린다.

디렉터리에 하드 링크를 만들 수 없다.

정답 보기

O 순환 구조를 막기 위해 금지(심볼릭은 가능).

ln -s 링크이름 원본이 올바른 순서다.

정답 보기

X 원본(대상)이 먼저, 링크 이름이 나중. cp와 같은 순서.

함께 보면 좋은 개념