출처 : https://www.youtube.com/watch?v=nFNwIISPLqY&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=20
링크(Link)
- 링크란 특정 파일 혹인 디렉토리에 접근을 쉽게 할 수 있도록 하는 방법이다.
- 파일의 링크(Link)는 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link 혹은 Soft Link) 2가지가 있다.
- 심볼릭 링크가 바로가기 아이콘과 비슷한 개념이다.
- 디렉토리에 원본 파일은 inode 블록과 Data 블록에 저장이 된다.
- inode 블록 : 모든 파일과 디렉토리는 1개씩의 inode가 있고, 각 inode에는 해당 파일의 소유권, 허가권, 파일 종류 등의 정보와 해당 파일의 실제 데이터가 어디에 있는지에 대한 위치(주소) 정보가 들어있다. 이러한 inode가 모여있는 공간을 inode 블록이라고 한다.
- Data 블록 : 실제 데이터가 저장된 디스크 공간이다.
- ls 로 파악하는 것은 원본 파일만 보이게 된다.
- 원본 파일을 만들면 실제 데이터는 Data 블록에 저장되고, 이 Data 블록을 inode 블록이 가리킨다.
- 하드 링크는 원본 파일과 같은 inode를 공유해서 실질적인 하드 디스크에 있는 원본 데이터 파일을 가리킨다.
- 하드 링크를 생성하면 '하드 링크 파일'만 하나 생성되며 같은 inode를 사용한다. ln + 링크 대상 파일 이름 + 링크 파일 이름 명령을 통해 생성한다.
- 심볼릭 링크는 새로운 inode를 생성해서 원본 파일 포인터를 가리킨다. 즉, 원본 데이터 파일이 아닌 원본 파일을 가리키게 된다.
- 심볼릭 링크를 생성하면 새로운 inode를 만들고, 데이터는 원본 파일을 연결하는 효과이다. ln -s + 링크 대상 파일 이름 + 링크 파일 이름 명령을 통해 생성된다.
하드 링크, 심볼릭 링크 실습
- 하드 링크, 심볼릭 링크의 개념을 실습을 통해 학습한다.
linktest 디렉토리를 만들고 nano 에디터로 basefile을 하나 생성한다.
ln basefile hardlink 로 basefile의 하드 링크를 생성하고, ln -s basefile symboliclink 명령으로 basefile의 심볼릭 링크를 생성한다.
ls -il 명령으로 출력하면, 하드 링크의 경우 basefile과 동일한 inode 번호(68829495)를 가지지만, 심볼릭 링크의 경우 basefile과 다른 inode 번호(68829496)를 가지는 것을 확인할 수 있다.
또한 하드 링크는 basefile과 동일한 크기(61 Bytes)를 가지지만, 심볼릭 링크는 다른 크기(8 Bytes)를 가지는 것을 볼 수 있다.
심볼릭 링크는 원본 파일을 지정한다는 의미로 화살표 -> 가 표시된다.
원본 파일을 상위 디렉토리로 옮겨보자.
hardlink는 원본 파일의 데이터를 가리키기 때문에 문제가 없지만, symboliclink는 원본 파일의 주소를 통해 원본 파일을 가리키기 때문에 연결이 끊어지게 된다.
cat 명령을 사용하면 hardlink는 정상적으로 출력되지만, symboliclink는 출력되지 않는다.
다시 basefile을 현재 디렉토리로 다시 가져오면 심볼릭 링크도 다시 정상적으로 동작하게 된다.
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (10) - 편리하게 패키지를 설치하는 DNF 명령 (1) | 2023.12.20 |
---|---|
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (9) - 프로그램 설치를 위한 RPM 명령 (0) | 2023.12.19 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (7) - 파일의 허가권과 소유권 (0) | 2023.12.18 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (6) - 사용자와 그룹 관련 명령 (1) | 2023.12.18 |
4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (5) - 리눅스 기본 명령 (1) | 2023.12.18 |