[리눅스] 링크 (Hard Link, Symbolic Link)

앙금빵·2021년 7월 18일
1

리눅스

목록 보기
8/13
  • 파일의 링크는 Hard Link 와 Symbolic Link (or Soft Link) 2가지로 분류된다.
  • Hard Link를 생성하려면 ln 링크대상파일이름 링크파일이름 명령을 실행한다.
    (ln = link)
  • 일반적으로 사용자는 주로 Symbolic Link를 주로 사용하며, Windows의 바로가기 아이콘도 Symbolic Link에 해당된다.
  • Symbolic Link 생성하려면 ln -s 링크대상파일이름 링크파일이름 명령을 실행한다.
    (ln -s = link symbolic)

inode

  • 리눅스/유닉스 파일 시스템에서 사용하는 자료구조
  • 모든 파일이나 디렉터리는 각자 1개씩의 inode가 있으며 각 inode에는 해당 파일의 정보가 있다. (소유권, 허가권, 파일종류, 실제 데이터 위치 등)

inode block

  • inode가 모여있는 공간
  • 일반적으로 전체 디스크 공간의 1% 차지

Data block

  • 실제 데이터가 저장된 디스크 공간
  • 전체 디스크 대부분 차지


#  /root/linktest 디렉터리에 basefile(메모 내용) 파일 만들어짐.

[root@localhost linktest] ln basefile hardlink #하드 링크 생성
[root@localhost linktest] ln -s basefile softlink #심볼링 링크 생성
[root@localhost linktest] ls -il #il 옵션을 통해 inode 번호를 제일 앞에 출력
total 8
33826060 -rw-r--r-- 2 root root 62 Jul 18 18:58 basefile
33826060 -rw-r--r-- 2 root root 62 Jul 18 18:58 hardlink
33826059 lrwxrwxrwx 1 root root  8 Jul 18 19:09 softlink -> basefile
[root@localhost linktest] 
[root@localhost linktest] cat hardlink #하드 링크 내용 확인

파일 링크를 실습하기 위한 원본 파일입니다.
[root@localhost linktest] cat softlink #소프트 링크 내용 확인

파일 링크를 실습하기 위한 원본 파일입니다. 

고찰

  • basefile의 inode = hard inode = 33826060
  • 원본 파일(basefile)과 hard link 파일의 크기는 61바이트로 동일
  • symbolic inode = 33826059
  • 원본파일 포인터를 가지기 때문에 8 바이트의 크기를 가짐
33826060 -rw-r--r-- 2 root root 62 Jul 18 18:58 basefile
33826060 -rw-r--r-- 2 root root 62 Jul 18 18:58 hardlink
  • 원본파일(basefile)을 다른곳으로 이동시켜보자
  • 하드 링크는 directory에서 원본파일이없어져도 아무 이상이 없음
  • 심볼릭 링크는 directory에서 원본 파일이 없어지면 연결이 끊어진다.
[root@localhost linktest] mv basefile ../ #basefile을 앞 디렉터리(..)로 이동
[root@localhost linktest] ls -il
total 4
33826060 -rw-r--r-- 2 root root 62 Jul 18 18:58 hardlink
33826059 lrwxrwxrwx 1 root root  8 Jul 18 19:09 softlink -> basefile
[root@localhost linktest]# cat hardlink

파일 링크를 실습하기 위한 원본 파일입니다.
[root@localhost linktest] cat softlink
cat: softlink: No such file or directory # 심볼릭 링크 연결이 끊어짐을 확인할 수 있음
  • 원본 파일을 현재 디렉터리로 가져와서 심볼릭 링크 상태를 확인해보자
[root@localhost ~] mv basefile ./linktest # basefile을 /linktest 상위 디렉토리로 이동
[root@localhost ~] cd linktest 
[root@localhost linktest] find # 해당 디렉토리 전체 파일을 보여줌
.
./hardlink
./softlink
./basefile
[root@localhost linktest]# 
[root@localhost linktest]# ls -il
total 8
67924318 -rw-r--r-- 2 root root 61 Jul 18 20:19 basefile
67924318 -rw-r--r-- 2 root root 61 Jul 18 20:19 hardlink
67924317 lrwxrwxrwx 1 root root  8 Jul 18 20:19 softlink -> basefile

[root@localhost linktest]# cat softlink
파일 링크를 실습하기 위한 원본 파일입니다.

참조

  • 이것이 리눅스다 CentOS 7 정리본
profile
Cloud 관련 개인 공부 지식들을 기록하는 공간입니다.

0개의 댓글