Coding Memo

[Linux] 리눅스 파일 유형 본문

etc

[Linux] 리눅스 파일 유형

minttea25 2024. 2. 29. 16:27

리눅스 파일 구분

 

리눅스에서 파일은 크게 4가지로 구분한다. 하드웨어 장치들도 모두 파일들로 관리되는 것에 주목하자.

 

 

1. 일반 파일 (Regular Files)

일반적인 파일들을 저장하는데 사용된다. 텍스트, 이미지, 바이너리 파일 등이 이에 포함된다.

 

2. 디렉터리 (Directories)

Windows의 폴더와 같은 개념이라고 보면 된다. 파일들과 디렉터리를 그룹화하고 구조화한다. 또한 파일의 계층 구조를 나타낸다.

 

3. 심볼릭 링크 (Symbolic Links)

Windows의 바로가기와 같은 개념이다. 특정 파일이나 디렉터리를 간접적으로 가리키는 파일이다. 즉, 가리키는 원본 파일과 가리키는 파일 (Symbolic links)가 따로 존재한다.

 

4. 장치 파일 (Device Files)

시스템의 하드웨어 장치를 표현하는 파일이다. 즉, 물리적인 장치와 시스템 간 상호작용을 나타낸다. 블록 장치(ex - 하드 디스크)와 문자 장치(ex - 터미널)로 구분된다.

 

 

 

다음 명령어로 파일 상세정보를 확인하고 해당 파일의 유형을 알 수 있다.

ls -l

 

정보에서 가장 앞에 오는 문자는 파일의 유형을 나타낸다.

- 일반 파일
d 디렉터리
l 심볼릭 링크
b 블록 장치 파일
c 문자 장치 파일

 

위 이미지에서 empty는 디렉터리이고 hardlink.c와 temp.c는 일반 파일, symboliclink.c는 심볼릭 링크 파일이다.


하드 링크와 심볼릭 링크

 

하드 링크와 심볼릭 링크는 시스템에서 파일을 참조하는 방법이다.

심볼릭 링크 (Symbolic Links) 파일이나 디렉터리를 가리키는 참조 방법으로 Windows의 바로가기(link)와 같음.
가리키는 원본 파일이나 디렉터리가 삭제되어도 심볼릭 링크 파일은 여전히 있으나 무효가 됨
ln [원본파일] [생성 파일]
하드 링크 (Hard Links) 원본 파일과 동일한 inode(인덱스 노드) 번호를 공유하는 파일
같은 파일에 대해 2가지 이름이 있다고 생각하면 됨
원본 파일이 삭제되더라도 하드 링크가 남아있으면 데이터는 여전히 남아 있음
하드 링크
ln -s [원본파일] [생성 파일]

NOTE: inode (index node)는 파일 시스템에서 파일이나 디렉터리를 식별하는데 사용되는 고유한 번호로, 파일 소유자 그룹, 권한, 크기 등의 메타데이터가 포함되어 있다.

 

 

위 이미지에서 temp.c에 대한 하드링크와 심볼릭 링크를 생성하고 파일 정보를 확인했다.

 

권한 (위에서는 -rw-r--r--) 뒤에 나오는 값이 해당 파일이나 디렉터리에 대한 하드링크의 수를 나타낸다.

생성하기 전에는 temp.c에 대한 하드 링크 값이 1로 자기 자신하나였지만, 하드 링크를 추가적으로 생성해서 2로 증가한 것을 확인 할 수 있다.

 

심볼릭 링크 파일은 해당 파일이 실제로 어떤 파일로 링크되어 있는지 나타내고 있다.