파일 구분 문자 | 파일 유형 설명 | 특징 |
- | 일반파일(정규파일) | |
b (block) | 블록장치 | - buffer cache를 사용하는 하드디스크, CD-ROM 등 - 랜덤하게 access 하여 처리 |
c (character) | 문자장치 | - 버퍼를 사용하지 않음 - 키보드,마우스 같은 주변장치 같은것 - 먼저 입력받은 작업을 처리 |
d (directory) | 디렉토리 | |
l (link) | 심볼릭링크 |
리눅스의 파일유형 중 심볼릭링크는 "l" 로 구분된다.
📌 Hard Link
하드링크 특징
- 하드링크로 파일을 생성해도 원본에 대한 동일한 inode를 사용한다.
- 원본수정시 하드링크도 수정된다.
- 원본을 이동,삭제해도 하드링크파일은 남아있다. inode를 가지고 있기 때문에 (링크 수가 0 이면 사라지는 개념이다.)
- 동일한 파일시스템에만 적용된다.
- 파일복사(cp)와의 차이점은 공간을 차지 하지 않는다는점이다.
하드링크는 왜 만들지?
리눅스는 파일생성 시 inode number 혹은 entry number 라는 것이 만들어지는데
이때 number는 파일을 식별하는 숫자이다.
근데 이 숫자를 사람이 모두 외울수가 없기 때문에 "파일명"이라는것으로 식별한다.
이 파일명에다가 링크를 걸어주는것이 하드링크이다.
이때 이 number는 물리적인 디스크를 알려주는 것이다.
하드링크 생성 방법
ln test1(원본파일) test2(링크 걸 대상의 파일)
하드링크 생성 후 다시 ls -li 로 inode number를 확인 해보면
test1 과 test2 는 같은 숫자인걸 확인 할 수 있다.
하드링크파일로 생성하더라도 inode를 새로 생성하지 않는다.
원본파일은 그대로 있고 inode만 가리키는 상태이다.
그래서 inode도 같고 링크수도 2개 이다.
하드링크의 단점
- 디렉토리에 대해서는 링크를 걸수가 없다. (file only)
- 동일한 시스템에서만 적용 된다는점
- 파티션 내에서만 가능 (하나의 파일 시스템 내에서만)
그래서 나온것이 심볼릭 링크이다. 심볼릭은 모두 적용 할 수 있다.
📌 Symbolic(Soft) Link
심볼릭링크 특징
- Windows 의 바로가기 아이콘과 비슷하다.
- 주로 사용자가 많이 사용하는 링크
- 하드링크와 달리 파일,디렉토리 모두 링크를 걸 수 있다.
- 긴 디렉토리명으로 이동시 유용함
- 원본을 다른곳으로 이동시키면 사용못함
- 새로운 inode 생성
- 원본자체를 가리키는 포인터 역할일 뿐이므로, 원본 수정 시 수정된 데이터가 보인다.
- 원본의 삭제 시 링크가 끊김
- 실질적으로는 inode에 의해서 돌아가는 것이다.
- 경로를 기준으로 만들어진다.
심볼릭링크 생성 방법
ln -s /home/~~~/s1(원본 절대경로) /home/~~~/s2(심볼릭링크 절대경로)
심볼릭 링크 생성 후 링크걸린 곳으로 가보면
s2 가 원본링크를 화살표로 가리키고 있다.
생성 시 주의점
- 링크는 절대경로로 입력해야 한다.
- 하드링크든, 심볼릭링크든 링크 대상으로 지정하고 싶은 파일명과 이미 존재하는 파일명은 달라야 한다.
그러니까 예시를 들자면 s1 을 s2 로 심볼릭링크 생성 시점에서
s2가 존재하지 않으면 새로 만들면서 링크가 걸린다.
s2가 존재하고 있다면 심볼릭링크가 생성되지 않는다.
심볼릭링크를 생성하게 되면 새로운 inode가 생성되고 이 노드는 원본파일을 가르킨다.
stat 명령어를 통해 하드링크완 다르게 inode가 다름을 더 상세하게 확인 할 수 있다.
💡 마무리
심볼릭링크 inode(386763)는 원본 inode(17709787)를 가리키는 포인터 역할을 한다.
심볼릭링크로 생성된 s2파일은 386763을 거쳐 17709787의 노드를 확인 한 뒤
원본파일인 s1 을 읽기 때문에 속도가 느리다는 단점이 있다.
또한 심볼릭링크는 inode가 무조건 생성되기 때문에 4KB의 공간을 차지하기도 하여
성능면에서는 하드링크 보다 떨어지는 점이 있다.
'Programming > Linux' 카테고리의 다른 글
[Ubuntu] yarn 설치 및 버전 확인 (0) | 2023.05.30 |
---|---|
[Linux] grep 설명/사용방법/간단예 (0) | 2023.01.27 |
[Linux] umask 기본접근권한 설정 및 진리표 (0) | 2022.10.23 |
[Linux] 파일/디렉토리 접근권한 제어 (chmod) (0) | 2022.10.02 |
[Unix/Linux] bash 중복 제거하기 (sort, awk) (1) | 2022.08.29 |