심볼릭(Symbolic) 링크 와 하드(Hard) 링크개발/개발환경2025. 4. 1. 13:01
Table of Contents
1. 심볼릭 링크 (Symbolic Link)
1-1. 개념
- 정의: 원본 파일이나 디렉토리를 가리키는 포인터(참조) 이다.
- 별칭: "symlink" 또는 "soft link"라고도 불린다.
- 특징: Windows의 "바로가기"와 비슷한 개념임.
- "바로가기"는 원본을 가리키는 참조일 뿐이다.
1-2. 작동 방식
# 예시 구조
original_file.txt (원본 파일)
└── symlink_to_file.txt (심볼릭 링크)
# 실제 예시
$ ln -s original_file.txt symlink_to_file.txt
2. 하드 링크 (Hard Link)
2-1. 개념
- 정의: 원본 파일과 동일한 inode를 공유하는 파일이다.
- 특징: 원본 파일의 실제 데이터를 직접 참조한다.
- 예시: 같은 문서의 복사본을 만드는 것과 비슷하다.
- 원본이 삭제되어도 복사본은 그대로 유지된다.
- 복사본은 원본과 완전히 동일한 내용을 가진다.
2-2. 작동 방식
# 예시 구조
original_file.txt (원본 파일)
└── hardlink_to_file.txt (하드 링크)
# 실제 예시
$ ln original_file.txt hardlink_to_file.txt
심볼릭 링크와 하드 링크의 주요 차이점
1. 원본 파일 삭제 시
심볼릭 링크
-> 원본이 삭제되면 링크도 작동하지 않는다.
-> "바로가기가 깨진다"고 생각하시면 된다.
하드 링크
-> 원본이 삭제되어도 링크는 계속 작동한다.
-> "복사본이 남아있다"고 생각하면 된다.
2. 디스크 공간
심볼릭 링크
-> 거의 공간을 사용하지 않는다
-> 주소만 저장하기 때문이다.
하드 링크
-> 원본 파일과 동일한 공간을 사용한다.
-> 실제 데이터를 복사하기 때문이다.
3. pnpm에서의 활용
3-1. pnpm의 의존성 관리 방식
# pnpm의 node_modules 구조
node_modules/
└── .pnpm/ # 실제 패키지 저장소
├── package-a@1.0.0/ # 실제 패키지
└── package-b@2.0.0/ # 실제 패키지
3-2. 하드 링크 사용
- pnpm은 전역 저장소의 패키지를 하드 링크로 연결 가능하다.
- 이를 통해 디스크 공간을 절약하면서도 빠른 접근이 가능하다.
3-3. 심볼릭 링크 사용
- 프로젝트의 node_modules에서 실제 패키지로 연결하는 데 사용된다.
- 이를 통해 의존성 구조를 유지하면서도 효율적인 공간 활용이 가능하다.
4. 실제 예시
4-1. npm vs pnpm 비교
# npm의 구조 (모든 패키지를 복사)
node_modules/
├── package-a/
├── package-b/
└── package-c/
# pnpm의 구조 (하드 링크와 심볼릭 링크 사용)
node_modules/
└── .pnpm/
├── package-a@1.0.0/ # 하드 링크
├── package-b@2.0.0/ # 하드 링크
└── package-c@3.0.0/ # 하드 링크
5. 결론
pnpm은 하드 링크와 심볼릭 링크를 조합하여 사용함으로써 밑에 항목들을 가능하게 해준다.
심볼릭 링크:
-
- "바로가기"처럼 원본을 가리키는 참조이다.
- 원본이 없으면 작동하지 않는다.
하드 링크:
-
- "복사본"처럼 원본과 동일한 파일이다.
- 원본이 삭제되어도 계속 사용할 수 있다.
'개발 > 개발환경' 카테고리의 다른 글
🚀 npm에서 pnpm으로 갈아탄 이유와 전환 과정 (0) | 2025.04.01 |
---|---|
file-loader VS url-loader (3) | 2024.01.29 |
ESLint 와 Prettier 설정해보기 (1) | 2023.12.11 |
[Webpack] 웹팩 최적화 1 (0) | 2023.12.04 |
내가 보려고 쓴 NginX 를 이용한 SSL 인증서 적용 (0) | 2023.06.20 |
@bokueyo :: 기록하는 습관
개발 블로그
포스팅이 좋았다면 "좋아요❤️" 누르기 !