5. 파일의 구성
파일의 구성 요소
- 리눅스 파일은 다음 세 가지 요소로 구성된다:
- 파일명: 사용자가 접근할 때 사용하는 이름
- inode: 파일의 메타데이터 및 위치 정보 저장
- 데이터 블록: 실제 파일 내용이 저장되는 공간
inode란?
1. 개념
- 파일 시스템에서 각 파일이나 디렉터리에 대한 메타데이터를 저장하는 데이터 구조체
- inode는 파일의 실제 데이터가 저장된 블록에 대한 정보를 포함하지 않지만, 파일의 속성 및 위치 정보를 포함
- 각 파일은 고유한 inode 번호를 갖고, 실제 데이터를 저장한 위치 정보를 간접적으로 포함한다
2. inode에 포함된 정보
- 파일 유형 (일반 파일, 디렉터리 등)
- 파일 크기
- 소유자 (UID), 그룹 (GID)
- 권한 (읽기, 쓰기, 실행)
- 생성/수정/접근 시간
- 데이터 블록을 가리키는 포인터 정보
3. inode 번호 확인
- 각 inode는 파일 시스템 내에서 고유한 번호를 가진다.
- 이 번호를 inode 번호라고 하며, 파일이나 디렉터리를 식별하는 데 사용된다.
- inode 번호 확인 명령어. 맨 앞에 출력되는 값이 inode 번호이다.
$ ls -i
- 파일 앞에 표시되는 숫자가 해당 파일의 inode 번호이다.
링크 (ln: Link)
1. 개념
- 기존 파일에 대해 추가적인 이름(경로)을 부여하는 방식
- 두 종류의 링크가 존재:
- 하드 링크: 동일한 inode를 참조
- 심볼릭 링크: 경로 문자열을 참조 (바로가기 형태)
링크 구조 시각화
하드 링크 구조
심볼릭 링크 구조
2. 하드 링크
- 같은 파일 시스템 내에서만 생성 가능
- 원본과 하드링크는 동일한 inode를 공유
- 원본 삭제 후에도 하드링크가 존재하면 데이터는 유지됨
- inode 는 접근하는 링크의 카운트를 가지고 있으며, 0이 되면 실제 원본 파일을 삭제한다.
하드 링크 생성
$ ln test test_h
3. 심볼릭 링크
- 서로 다른 파일 시스템 간에도 생성 가능
- 링크 자체가 별도 inode를 가지며, 원본 파일 경로를 문자열로 저장
- 원본 삭제 시 링크는 깨진 상태가 됨
심볼릭 링크 생성
$ ln -s test test_s
하드 링크 vs 심볼릭 링크
하드 링크 실습
- 파일 생성 (
echo
,>
명령어는 이후 자세히 배운다)
$ echo "Hello, World!" > test
- 하드 링크 생성
$ ln test test_h
- inode 번호 확인
$ ls -li
test 와 test_h가 동일한 inode 번호를 가진 것을 확인할 수 있다.
- 하드 링크를 통해 내용 추가 후 원본 확인 (
>>
,cat
명령어는 이후 자세히 배운다)
$ echo "Hard Link!" >> test_h
$ cat test
test_h 에 추가한 내용이 test 에서도 확인된다.
- 원본 파일 삭제 후 하드 링크로 접근
$ rm test
$ cat test_h
심볼릭 링크 실습
- 파일 생성
$ echo "Hello, World!" > test
- 심볼릭 링크 생성
$ ln -s test test_s
- 링크 확인
$ ls -li
test_s 가 test 를 가리키는 것을 확인할 수 있다.
- 심볼릭 링크를 통해 내용 추가 후 원본 확인
$ echo "Symbolic Link!" >> test_s
$ cat test
test_s 에 추가한 내용이 test 에서도 확인된다.
- 원본 삭제 후 링크 확인
$ rm test
$ cat test_s
심볼릭 링크는 원본이 삭제되면 더 이상 접근할 수 없다.
[실습] 링크 실습 (10분)
파일 검색
1. find
명령어
-
파일 시스템에서 파일이나 디렉터리를 검색하는 데 사용된다.
- 환경 구성
cd ~ mkdir find cd find touch file1.txt file2.txt file3.log fallocate -l 2M 2M_FILE
- 명령어
-
특정 디렉터리에서 파일 검색:
find . -name "file1.txt"
.
: 검색할 디렉터리 경로name "file1.txt"
: 이름이 “filename”인 파일 검색
-
파일 유형별 검색:
find . -type f -name "*.txt"
type f
: 일반 파일 검색name "*.txt"
: 확장자가 .txt인 파일 검색
-
특정 시간 이내에 수정된 파일 검색:
find . -mmin -1
mmin -1
: 1분 이내에 수정된 파일 검색-mmin +1
1분 이상 전에 수정된 파일 검색
-
특정 크기 이상의 파일 검색:
find . -size +1M
size -10M
: 크기가 10MB 미만인 파일 검색size 10k
: 10KB 인 파일 검색size +1M
: 크기가 1MB 초과인 파일 검색
-
[실습] 파일 찾기
요약
- 리눅스 파일은 파일명 + inode + 데이터 블록으로 구성된다.
- inode는 파일의 속성과 저장 위치 정보를 포함한 핵심 구조이다.
- 링크는 동일한 데이터를 다른 이름으로 참조하는 방법이며, 하드 링크와 심볼릭 링크로 나뉜다.
- 하드 링크는 inode를 공유하고, 심볼릭 링크는 경로 문자열을 참조한다.