하드 링크와 심볼릭 링크, 무엇이 다를까? 그리고 pnpm에서의 활용
들어가며
개발 프로젝트를 하다 보면 파일 시스템의 동작 원리를 이해해야 할 때가 있습니다. 특히 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link)는 헷갈리기 쉬운 개념이지만, 제대로 이해하면 파일 관리와 디스크 공간 활용에 큰 도움이 됩니다. 이번 글에서는 두 링크의 차이와 함께, pnpm에서 이 두 링크가 어떻게 활용되는지도 함께 살펴보겠습니다.
1. 하드 링크 (Hard Link)
하드 링크란?
하드 링크는 원본 파일의 데이터 블록에 직접 연결하는 또 다른 이름입니다. 하드 링크는 원본 파일과 완전히 동일한 데이터 블록을 공유하기 때문에 원본 파일을 삭제해도 데이터에 접근할 수 있습니다.
특징
- 같은 파일 시스템 안에서만 생성 가능
- 원본 파일 삭제 시에도 데이터 보존
- 동일한 데이터 블록을 참조하므로 저장 공간 효율적 사용
하드 링크 예제
# 1. 원본 파일 생성
$ echo "Hello, Hard Link" > fileA.txt
# 2. 하드 링크 생성
$ ln fileA.txt fileB.txt
# 3. 두 파일 확인
$ cat fileA.txt
Hello, Hard Link
$ cat fileB.txt
Hello, Hard Link
# 4. 원본 파일 삭제 후 확인
$ rm fileA.txt
$ cat fileB.txt
Hello, Hard Link
결과: fileB.txt는 원본 파일이 삭제된 후에도 데이터를 그대로 유지합니다.
2. 심볼릭 링크 (Symbolic Link)
심볼릭 링크란?
심볼릭 링크는 원본 파일의 경로를 참조하는 링크로, 바로가기처럼 동작합니다. 원본 파일이 이동하거나 삭제되면 심볼릭 링크는 깨진 링크가 됩니다.
특징
- 파일뿐만 아니라 디렉토리에도 링크 생성 가능
- 다른 파일 시스템 간에도 생성 가능
- 원본 파일 경로를 참조하므로 원본 삭제 시 링크 손상
심볼릭 링크 예제
# 1. 원본 파일 생성
$ echo "Hello, Symbolic Link" > fileA.txt
# 2. 심볼릭 링크 생성
$ ln -s fileA.txt fileC.txt
# 3. 두 파일 확인
$ cat fileA.txt
Hello, Symbolic Link
$ cat fileC.txt
Hello, Symbolic Link
# 4. 원본 파일 삭제 후 확인
$ rm fileA.txt
$ cat fileC.txt
cat: fileC.txt: No such file or directory
결과: fileC.txt는 원본 파일이 삭제되면 깨진 링크가 되어 데이터를 읽을 수 없습니다.
3. pnpm에서 하드 링크와 심볼릭 링크의 활용
pnpm은 패키지 매니저로, 파일 시스템의 링크 개념을 활용해 효율적으로 동작합니다.
하드 링크 활용
pnpm은 동일한 패키지를 여러 프로젝트에서 사용할 때, 패키지 데이터를 하드 링크를 통해 연결합니다. 이로 인해 중복 저장 없이 디스크 공간을 절약할 수 있습니다.
심볼릭 링크 활용
pnpm은 프로젝트의 node_modules 폴더에 설치된 패키지를 심볼릭 링크로 연결합니다. 이 방식은 각 패키지가 실제로는 전역 저장소에 저장되지만, 프로젝트에서는 경로를 참조하여 사용하는 구조입니다.
# pnpm 설치 후 구조 확인
$ pnpm install some-package
$ tree node_modules
node_modules
└── some-package -> ~/.pnpm-store/some-package
결과: some-package는 실제 저장소 위치를 참조하는 심볼릭 링크로 연결됩니다.
이점
- 저장 공간 절약: 패키지 데이터 중복 없이 하드 링크로 효율적 관리
- 빠른 설치: 이미 설치된 패키지를 심볼릭 링크로 연결해 속도 향상
4. 하드 링크와 심볼릭 링크의 비교
구분 | 하드 링크 | 심볼릭 링크 |
동작 방식 | 파일 데이터 블록에 직접 연결 | 파일의 경로를 참조 |
삭제 시 영향 | 원본 삭제해도 링크 데이터 유지 | 원본 삭제 시 링크 손상 |
파일 시스템 | 같은 파일 시스템에서만 가능 | 다른 파일 시스템도 가능 |
디렉토리 링크 | 지원하지 않음 | 디렉토리 링크 가능 |
속도 | 하드 링크가 더 빠름 | 심볼릭 링크는 경로 참조로 약간 느림 |
정리
하드 링크와 심볼릭 링크는 각각의 장단점이 있습니다.
- 하드 링크는 디스크 공간을 효율적으로 사용하고 데이터 보존성이 높지만, 같은 파일 시스템 내에서만 사용할 수 있습니다.
- 심볼릭 링크는 경로를 참조하기 때문에 더 유연하지만, 원본 파일의 위치나 상태에 영향을 받습니다.
원본 파일과 데이터 블록이 각각 무엇인지 이해해보기
데이터 블록이란 무엇인가?운영체제에서 파일은 ① 파일 이름과 ② 실제 데이터를 저장하는 데이터 블록으로 나뉩니다. 데이터 블록은 하드 디스크나 SSD와 같은 저장 매체에 실제로 저장된 데
jaanmun.tistory.com