[Linux] 리눅스(CentOS7)

[Linux] 리눅스 하드 링크와 심볼릭 링크(소프트 링크)

ITsubin 2022. 3. 10. 01:52

하드 링크와 심볼릭 링크(소프트 링크)에 관해 포스팅하겠습니다.

오늘 포스팅할 내용을 가볍게 요약한 후 실습하겠습니다.

 

파일 링크란 기존 파일에 새로운 파일명을 붙이는 것이라고 볼 수 있습니다.

링크에는 하드 링크심볼릭 링크가 있습니다.

하드 링크는 기존 파일에 새로운 파일명을 추가 생성하는 것으로 ln 명령어로 생성이 가능하며,

심볼릭 링크는 바로가기를 생성하는 것으로 ln s 명령으로 생성이 가능합니다.

 

[link]

- 유닉스나 리눅스 파일 시스템에서 실제 파일이나 디렉터리를 연결

 

[inode]

- 리눅스/유닉스의 파일 시스템에서 사용하는 자료구조(DB)

- 모든 파일이나 디렉토리는 각자 1개씩의 inode

- inode 정보 : 허가권, 소유권, 파일 종류, 해당 파일의 실제 위치

 

[하드 링크]

- 형식 : ln [원본파일이름] [링크파일이름]

 

[소프트 링크]

- 형식 : ln -s [원본파일이름] [링크파일이름]

 

 

[심볼릭 링크(소프트 링크)]

 

심볼릭 링크(소프트 링크), 윈도우의 바로가기라고 볼 수 있습니다.

바로가기 파일은 원본 파일을 가리키고 있을 뿐이고,

바로가기 파일을 삭제한다고 해서 원본 파일에는 전혀 변화가 없습니다.

 

리눅스에서는 이를 Symbolic link (Soft link)라고 합니다. 리눅스에서도 심볼릭 링크를 생성해보겠습니다.

일단 먼저 /test 디렉터리 안에 입출력 리다이렉션으로 ABC라는 내용을 가진 1.txt라는 파일을 생성하겠습니다.

[root@localhost test]# pwd ; echo "ABC" > 1.txt ; ll
/test
합계 4
-rw-r--r--. 1 root root 4 310 01:05 1.txt
[root@localhost test]#

 

이제 이 [1.txt] 파일을 가리키는 심볼릭 링크를 생성하겠습니다.

 

ln 명령어(link의 약어)s 옵션을 사용하면 심볼릭 링크를 생성할 수 있습니다.

[root@localhost test]# ln -s /test/1.txt softlink ; ll ; cat 1.txt softlink
합계 4
-rw-r--r--. 1 root root 4 310 01:05 1.txt
lrwxrwxrwx. 1 root root 11 310 01:16 softlink -> /test/1.txt
ABC
ABC
[root@localhost test]#

 

[lrwxrwxrwx.] 링크 파일은 l로 시작하며, [softlink -> /test/1.txt] softlink/test/1.txt를 가리키고 있는 것을 알 수 있습니다.

링크 파일을 열어봐도 1.txt의 내용을 그대로 보여주는 것 또한 알 수 있습니다.

 

원본 파일의 이름을 바꾸거나, 삭제하면 아래처럼 심볼릭 링크 파일의 연결이 끊기는 것을 확인할 수 있습니다.

하지만 다른 것이 하나 있습니다. 그건 바로 파일의 크기입니다.

 

아래처럼 cat 명령어로 링크 파일을 확인한다면 원본의 내용만을 보여주지만, readlink 명령어로 링크 파일을 사용한다면 링크 파일의 실제 내용을 확인할 수 있습니다.

[root@localhost test]# cat linkfile
ABC
[root@localhost test]# readlink linkfile
/test/1.txt
[root@localhost test]#

/test/1.txt 11글자, 11바이트입니다.

 

[하드 링크]

 

심볼릭 링크와 다르게, 하드 링크는 저에게는 조금 생소한 개념이었습니다.

 

파일은 [파일명][inode], [데이터 블록]으로 이루어져 있습니다.

inode는 모든 파일이나 디렉터리가 각자 1개씩만 가집니다.

(inode 정보에는 허가권, 소유권, 파일 종류, 해당 파일의 실제 위치 등이 들어있습니다.)

 

파일명이 달라도 inode 번호가 같으면 동일한 파일입니다.

 

inode 번호는 ls 명령어의 i 옵션으로 확인이 가능합니다. 하드 링크를 생성한 후 inode 번호를 확인하겠습니다.

[root@localhost test]# ln /test/1.txt hardlink ; ls -i
71 1.txt 71 hardlink 1772 softlink
[root@localhost test]#

 

1.txthardlink 파일의 inode 번호가 모두 71번으로, 같은 파일임을 확인할 수 있습니다.

'[Linux] 리눅스(CentOS7)' 카테고리의 다른 글

[Linux] 리눅스 특수 권한_2  (0) 2022.03.12
[Linux] 리눅스 디스크 파티션  (0) 2022.03.11
[Linux] 리눅스 특수 권한  (0) 2022.03.09
[Linux] 리눅스 Umask  (0) 2022.03.08
[Linux] 허가권과 소유권_2  (0) 2022.03.07