파일 시스템
파일 시스템의 정의
- 운영체제가 디스크나 파티션 상에 파일들을 구성하는 방식
- 파일과 디렉터리의 집합을 구조적으로 관리하는 체계
- 리눅스는 전체 파일 시스템을 1개의 트리 구조로 관리한다.
1개의 트리 구조의 의미
전체 파일 시스템을 1개의 트리 구조로 관리한다.
=> 루트(/) 디렉터리는 1개만 존재할 수 있다.
이와 달리 윈도우 운영체제는 드라이브마다 루트 디렉터리가 존재한다. (C:/, D:/)
리눅스에서 파일의 종류
ls -l 명령의 결과에서 각 라인의 가장 처음에 등장하는 문자는 파일의 종류를 나타낸다.
파일의 종류 | 설명 |
---|---|
정규 파일 | - 데이터를 저장하는 데 주로 사용되는 파일 - 대부분의 파일이 이 정규 파일에 해당한다. - 텍스트 파일, 실행 파일, 이미지 파일 등 - 바이너리 파일 : 실행 파일이나 이미지 파일 등. 이들은 바이너리 형태로 저장됨 |
디렉터리 | - 리눅스에서는 디렉터리도 파일로 취급한다. - 디렉터리는 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장된 파일임. |
심볼릭 링크 | - 윈도우의 바로가기와 같은 것으로, - 절대경로나 상대경로를 사용해 다른 파일이나 디렉터리를 가리키는 파일 - 소프트링크라고도 한다. |
장치 파일 | - 리눅스에서는 각종 주변 장치를 파일로 취급하여 인터페이스를 제공한다. - 블록 디바이스 파일과 문자 디바이스 파일로 구분된다. |
블록 디바이스 파일 | - 블록 단위로 데이터를 읽고 쓸 수 있는 디바이스인 블록 디바이스 - 이러한 블록 디바이스에 인터페이스를 제공하는 것이 블록 디바이스 파일 - 하드디스크나 CD-ROM 같은 것들이다. |
문자 디바이스 파일 | -한 번에 한 문자(바이트)씩 데이터를 주고받을 수 있는 디바이스 -이러한 디바이스에 인터페이스를 제공하는 것이 문자 디바이스 파일이다. - 시리얼 포트, 병렬 포트, 터미널 등이 문자 디바이스에 해당함. |
파이프 디바이스 파일 | - 프로세스 간 통신을 위한 특수한 파일 - 문자 디바이스와 유사하나, 실제 디바이스와 연결된 것은 아니고 - 입력을 요구하는 프로세스와 출력을 제공하는 프로세스와 연결된다. |
소켓 디바이스 파일 | 소켓 : 한 호스트 안에서 프로세스 간 통신의 목적으로 사용되는 인터페이스 |
파일 시스템 탐색 방법
리눅스 파일 시스템 탐색에 사용되는 명령어는 ls, file, pwd, cd 등의 명령이 있다.
명령어 | 설명 |
---|---|
ls | 디렉터리의 내용을 출력하는(목록을 나열하는) 명령어 |
file | 파일의 종류를 알려주는 명령어 |
pwd | 현재 작업 디렉터리를 절대 경로 방식으로 알려주는 명령어 |
cd | 작업 디렉터리를 이동하는 명령어 |
ls
- 기본 사용법 :
ls [options] [names:디렉터리명]
- 디렉터리 안의 파일과 서브디렉터리 목록을 나열하는 명령
- 옵션에 따라 파일과 디렉터리의 속성도 확인할 수 있음
- 한 번에 여러 개의 디렉터리를 인수로 가질 수도 있다.
- 출력의 기본은 이름의 알파벳 순서이다.
짧은 옵션 | 긴 옵션 | 설명 |
---|---|---|
-a | –all | 숨김 파일을 포함하여 모든 파일을 보여준다. |
-d | –directory | 디렉터리 자체에 대한 정보를 보여준다. |
-F | –classify | 파일의 종류를 알려주는 문자를 오른쪽에 붙여 보여준다. 실행 파일 : *, 디렉터리 : /, 심벌릭링크 : @ |
-h | –human-readable | 파일의 크기를 바이트가 아닌 human-readable로 변경해서 출력 |
-i | –inode | 왼쪽에 inode 번호를 보여줌 |
-l | –format=long | 긴 포맷으로 결과를 보여줌 |
-r | –reverse | 역순으로 결과를 보여줌 기본이 알파벳순이니, 알파벳 역순으로 출력 |
-R | –recursive | 재귀적 수행, 서브디렉터리의 내용도 나열된다. |
-S | –sort=size | 파일의 크기 순서로 출력한다. |
-t | –sort=time | 최종 수정시간 순서로 출력한다. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
ls
>> docker docker_mounts script.sh
>> docker-compose installation
ls -a
>> . .bashrc docker
>> .. .config docker-compose
>> .bash_history .lesshst docker_mounts
>> .bash_logout .ssh installation
>> .bash_profile .wget-hsts script.sh
ls -al
>> drwx------. 8 user user 4096 Nov 24 18:00 .
>> drwxr-xr-x. 3 root root 22 Sep 10 01:20 ..
>> -rw-------. 1 user user 19084 Nov 24 16:55 .bash_history
>> -rw-r--r--. 1 user user 18 Jan 24 2023 .bash_logout
>> -rw-r--r--. 1 user user 141 Jan 24 2023 .bash_profile
>> -rw-r--r--. 1 user user 511 Nov 24 17:59 .bashrc
>> drwx------. 3 user user 20 Sep 23 09:38 .config
>> -rw-------. 1 user user 20 Nov 24 15:11 .lesshst
>> drwx------. 2 user user 29 Sep 10 23:52 .ssh
>> -rw-r--r--. 1 user user 183 Nov 11 00:35 .wget-hsts
>> drwx--x---. 12 root root 171 Nov 17 11:59 docker
>> drwxr-xr-x. 3 user user 59 Oct 26 23:17 docker-compose
>> drwxr-xr-x. 7 user user 97 Oct 26 21:48 docker_mounts
>> drwxr-xr-x. 3 user user 24 Oct 26 22:03 installation
>> ---x--x---. 1 user user 7 Oct 9 18:07 script.sh
ls -F
>> docker/ docker_mounts/ script.sh*
>> docker-compose/ installation/
ls -R
>> 아래 있는 모든 디렉터리 재귀적으로 출력
ls -l 명령의 해석
1
2
3
4
5
6
ls -l
>> drwx--x---. 12 root root 171 Nov 17 11:59 docker
>> drwxr-xr-x. 3 user user 59 Oct 26 23:17 docker-compose
>> drwxr-xr-x. 7 user user 97 Oct 26 21:48 docker_mounts
>> drwxr-xr-x. 3 user user 24 Oct 26 22:03 installation
>> ---x--x---. 1 user user 7 Oct 9 18:07 script.sh
필드 | 설명 |
---|---|
첫 번째 문자 | - 파일의 종류를 나타내는 문자 - 대시(-) : 정규 파일 - d : 디렉터리 - l : 심벌릭 링크 - b : 블록 디바이스 - c : 문자 디바이스 - p : 파이프 디바이스 - s : 소켓 |
rwx–x— | - 파일의 접근 권한 |
12, 3 … | - 하드 링크의 수 |
root | 파일 소유자의 계정 |
root | 파일 소유 그룹의 계정 |
171 | 바이트 단위의 파일 크기 |
Nov 17 11:59 | 파일이 최종 수정된 날짜와 시간 |
docker | 파일 또는 디렉터리의 이름 |
file
- 파일의 종류를 알려주는 명령
1
2
3
4
5
6
7
8
9
10
11
file docker
>> docker: directory
file script.sh
>> script.sh: executable, regular file, no read permission
file /dev/nvme0
>> /dev/nvme0: character special
file /dev/vcs
>> /dev/vcs: character special
pwd
- 현재 작업 디렉터리를 절대 경로 방식으로 출력하는 명령
1
2
pwd
>> /dev
cd
cd [디렉터리]
와 같은 방식으로 사용- 작업 디렉터리를 이동하는 명령
- 디렉터리를 지정하지 않는 경우 사용자의 홈 디렉터리로 이동함.
1
2
3
4
5
6
7
8
cd /usr/bin
# > 바이너리 파일 디렉터리로 이동함
cd /dev
# > 장치 디렉터리로 이동함
cd
# > 사용자 홈 디렉터리로 이동함