파일 시스템
FHF (Filesystem Hierarchy Standard) 표준 파일 시스템은 아래 그림처럼 구성되어 있다. 초록색은 사용자 권한으로 접근할 수 있는 디렉토리, 노란색은 시스템 파일 디렉토리, 분홍색은 관리자 권한으로 접근할 수 있는 디렉토리이다.
- / : 루트 디렉토리
- /bin : 기본적인 명령어
- /boot : 부트로더 디렉토리
- /dev : 시스템 디바이스 (장치파일)
- /etc : 각종 설정파일
- /home : 사용자의 홈 디렉토리
- /lib : 라이브러리 및 커널모듈
- /media : 외부 저장소 (cdrom, usb 등)
- /mnt : 외부 저장소 또는 파일시스템 마운트포인트
- /proc : 시스템 설정들의 가상파일시스템 (pseudo-file 시스템)
- /root : 루트 사용자의 홈 디렉토리
- /sbin : 시스템 (관리자용) 명령어
- /tmp : 임시 저장소 /usr : 일반 사용자들 공통파일
- /var : 시스템 운용중에 생성되는 임시 데이터 저장소
이중에서 각종 설정 파일들이 들어있는 /etc 디렉토리와 임시 데이터 저장소인 /var 디렉토리를 많이 사용하게 된다.
/boot 디렉토리는 리눅스를 업데이트 하면 이곳에 새로운 커널 정보와 이미지가 쌓이는 곳이다. 오래되서 더 이상 사용하지 않는 부트 파일 시스템은 update 명령어를 통해 삭제할 수 있다.
/home 디렉토리는 사용자 별 고유의 영역이다.
/etc 디렉토리는 시스템을 운영하는데 필요한 각종 설정파일들이 들어있다. 새로운 패키지를 위한 파일들이 모두 이곳에 위치한다.
그 중에서도 /etc/*-release
디렉토리는 시스템(리눅스) 배포판 정보를 가지고 있는 곳이다.
/var 및 /var/log 디렉토리는 시스템을 운영함에 있어 다양하게 변경되는 파일들을 담는 곳이다. 가장 대표적인 것이 log 파일인데 시스템의 process ID 나 각종 locking 파일들을 가지고 있다.
파일 시스템 명령어 - 검색 (find)
$ find [OPTIONS] [PATH] [EXPRESSION]
find *.txt
: 내 현재 디렉토리에서 확장자가 .txt 인 파일을 찾는 법find . -name “*.txt”
: 내 현재 디렉토리에서부터 확장자가 .txt 인 파일을 찾는 법find . -name “hello*” -type f
: 내 현재 디렉토리에서 파일명이 hello로 시작하는 “파일” 만 찾는 법find . -name “dir*” -type d
: 내 현재 디렉토리에서 디렉토리명이 dir 로 시작하는 “디렉토리” 만 찾는 법find . -size +100000000c
: 내 현재 디렉토리에서 용량이 100,000,000바이트 (100M) 보다 큰 파일 찾는 법find -newerct “15 May 2020” -ls
: 최근 생성된 파일만 찾아보기 (2020년 5월 15일 이후 변경된 파일find . -mtime +2 -a -mtime -5 -ls
:최근 2일에서 5일 사이에 변경된 파일 찾기
파일 시스템 명령어 - 속성 (stat)
원하는 파일의 속성 (주로 시간) 확인
$ stat [OPTIONS] [FILE]
시간의 유형 (atime, mtime, ctime)
- Access : 파일에 최근 접근 시간 (원래는 파일을 읽기만 해도 시간이 변경되었으나 지금은 바뀜)
- Modify : 파일의 내용 변경 시간
- Change : 파일의 수정 시간 (inode 관점에서의 변화 시간 - 생성, 변경, 속성수정 등)
ls 명령어에서의 시간 확인
- ls -l : 기본값 (mtime)
- ls -l -u : atime
- ls -l -c : ctime
검색 명령어 - 필터링 (grep)
특정 패턴 검색 (또는 정규표현식 패턴 검색)
$ grep [OPTION] PATTERN [FILE]
ls -al | grep tx
: 파일 목록에서 특정 단어 검색netstat -a | grep 80
: 특정 포트가 열려 있는지 확인
내용 검색/편집 명령어 (sed)
스트림라인 편집기 (search and replace)
sed ‘s/패턴/변환/g’
- 파일 내의 모든 book 을 books 로 변경
-
cat /usr/share/doc/vim/copyright sed ‘s/book/books/g’
-
- (글자가 있는) 모든 줄의 맨 끝을 ! 표로 끝나도록 변경
-
cat /usr/share/doc/vim/copyright sed ‘s/.$/!/g’
-
- 출력 결과를 소문자에서 대문자로 변경
-
ls -l sed ‘s/[a-z]/\U&/g’
-
- 출력 결과를 대문자에서 소문자로 변경
-
cat /etc/passwd sed ‘s/[A-Z]/\L&/g’
-
파일시스템 주요 명령어 (디스크 용량) - du (disk usage), df (disk free)
du는 디렉토리 디스크 사용량을 확인한다.
$ du
$ du -h
$ du -S | sort -n
df 명령어가 시스템 전체의 디스크 공간을 확인하는 명령어라면, du 명령은 특정 디렉토리를 기준으로 디스크 사용량을 확인한다. -h 옵션을 사용하여 디스크 사용량을 K, M, G 단위로 확인할 수 있다. 디렉토리 이름을 지정하지 않으면 현재 디렉토리를 기준으로 디스크 사용량을 출력한다. 디렉토리 안에 있는 서브 디렉토리의 디스크 사용량도 표시합니다. du -S | sort -n 은 디렉토리별 용량을 오름차순 소팅해서 출력해준다. |
df (disk free)는 디스크 여유 공간을 확인한다.
$ df
$ df -h
df 명령을 사용하면 리눅스 시스템 전체의 (마운트 된) 디스크 사용량을 확인할 수 있다. 파일시스템, 디스크 크기, 사용량, 여유공간, 사용률, 마운트지점 순으로 나타난다. USB메모리나 SD카드의 저장공간도 여기서 확인이 가능하다. -h 옵션을 사용하면 사람이 보기 좋게 메가(M), 기가(G) 단위로 디스크 공간을 확인할 수 있다.
파일시스템 주요 명령어 (묶음/압축) – tar (tape archive)
$ tar [OPTION] [FILE] [PATH]
tar cvf myzip.tar dir1
:tar 아카이브 만들기tar xvf myzip.tar
:tar 아카이브 풀기
옵션
- c : create (생성)
- x : extract (해지)
- v : verbose (디테일한 상황 보고 - 실행 중 파일 목록 출력)
- f : file (저장될 파일명 지정하기 위해)
- t : list (목록 확인)
- z : zip (압축)
- j : bzip2 (압축)