리눅스에서 파일 File 이란 개념은 다음과 같이 세 가지로 분류한다.
- 넓은 의미의 파일
- 좁은 의미의 파일
- 스트림
넓은 의미의 파일
bash에서 ls 명령어 입력 시 나오는 모든 것.
좁은 의미의 파일
- 보통 파일 regular/normal file
- 디렉토리 directory
- 심볼릭 링크 symbolic(soft) link
- 디바이스 device
터미널에서 ls -l 명령어를 입력해보자.
이때 파일명을 비롯해 표시된 정보들을 메타 데이터라고 하는데
각 요소들의 의미는 아래와 같다.
하드링크란 무엇일까?
하드링크는 원본 파일과 이름만 다른 동일 파일이라고 보면 된다.
원본 파일과 하드링크된 파일은 inode를 공유하기 때문에
하드링크 파일이 수정되면 원본 파일 또한 수정된다.
ln 명령어를 사용하여
sum.c라는 원본 파일에 대해 hl_sum.c라는 하드링크 파일을 생성했다.
그 후, ls에 -i 옵션을 주어 파일들의 inode 번호를 확인했다.
두 파일의 inode 번호가 일치한다는 것을 확인할 수 있었다.
inode는 무엇이지?
inode는 리눅스 파일 시스템에서 사용하는 자료구조 중 하나이다.
파일이 생성될 때, inode 또한 생성되며 다음과 같은 정보들이 inode에 포함된다.
- 파일모드
- 링크 수
- 사용자 아이디
- 그룹 아이디
- 파일 크기
- 파일 주소
- 마지막 접근
- 마지막 수정
- 마지막 inode 수정
터미널에서 mount -t ext4 를 입력해보자.
파티션의 개수만큼 문자열이 출력될 것이다.
출력 문자열이 의미하는 바는
시스템의 첫 번째 디스크의 첫 번째 파티션이 ext4 파일 시스템을 사용하며
루트(/) 디렉토리에 마운트되어 있음을 의미한다.