파일 시스템

FHF (Filesystem Hierarchy Standard) 표준 파일 시스템은 아래 그림처럼 구성되어 있다. 초록색은 사용자 권한으로 접근할 수 있는 디렉토리, 노란색은 시스템 파일 디렉토리, 분홍색은 관리자 권한으로 접근할 수 있는 디렉토리이다.

image

  • / : 루트 디렉토리
  • /bin : 기본적인 명령어
  • /boot : 부트로더 디렉토리
  • /dev : 시스템 디바이스 (장치파일)
  • /etc : 각종 설정파일
  • /home : 사용자의 홈 디렉토리
  • /lib : 라이브러리 및 커널모듈
  • /media : 외부 저장소 (cdrom, usb 등)
  • /mnt : 외부 저장소 또는 파일시스템 마운트포인트
  • /proc : 시스템 설정들의 가상파일시스템 (pseudo-file 시스템)
  • /root : 루트 사용자의 홈 디렉토리
  • /sbin : 시스템 (관리자용) 명령어
  • /tmp : 임시 저장소 /usr : 일반 사용자들 공통파일
  • /var : 시스템 운용중에 생성되는 임시 데이터 저장소

이중에서 각종 설정 파일들이 들어있는 /etc 디렉토리와 임시 데이터 저장소인 /var 디렉토리를 많이 사용하게 된다.

/boot 디렉토리는 리눅스를 업데이트 하면 이곳에 새로운 커널 정보와 이미지가 쌓이는 곳이다. 오래되서 더 이상 사용하지 않는 부트 파일 시스템은 update 명령어를 통해 삭제할 수 있다.

image

/home 디렉토리는 사용자 별 고유의 영역이다.

image

/etc 디렉토리는 시스템을 운영하는데 필요한 각종 설정파일들이 들어있다. 새로운 패키지를 위한 파일들이 모두 이곳에 위치한다.

image

그 중에서도 /etc/*-release 디렉토리는 시스템(리눅스) 배포판 정보를 가지고 있는 곳이다.

image

/var 및 /var/log 디렉토리는 시스템을 운영함에 있어 다양하게 변경되는 파일들을 담는 곳이다. 가장 대표적인 것이 log 파일인데 시스템의 process ID 나 각종 locking 파일들을 가지고 있다.

image

파일 시스템 명령어 - 검색 (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일 사이에 변경된 파일 찾기

image

image

파일 시스템 명령어 - 속성 (stat)

원하는 파일의 속성 (주로 시간) 확인

$ stat [OPTIONS] [FILE]

시간의 유형 (atime, mtime, ctime)

  • Access : 파일에 최근 접근 시간 (원래는 파일을 읽기만 해도 시간이 변경되었으나 지금은 바뀜)
  • Modify : 파일의 내용 변경 시간
  • Change : 파일의 수정 시간 (inode 관점에서의 변화 시간 - 생성, 변경, 속성수정 등)

ls 명령어에서의 시간 확인

  • ls -l : 기본값 (mtime)
  • ls -l -u : atime
  • ls -l -c : ctime

image

검색 명령어 - 필터링 (grep)

특정 패턴 검색 (또는 정규표현식 패턴 검색)

$ grep [OPTION] PATTERN [FILE]
  • ls -al | grep tx: 파일 목록에서 특정 단어 검색
  • netstat -a | grep 80: 특정 포트가 열려 있는지 확인

image

내용 검색/편집 명령어 (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 은 디렉토리별 용량을 오름차순 소팅해서 출력해준다.

image

df (disk free)는 디스크 여유 공간을 확인한다.

$ df 
$ df -h

df 명령을 사용하면 리눅스 시스템 전체의 (마운트 된) 디스크 사용량을 확인할 수 있다. 파일시스템, 디스크 크기, 사용량, 여유공간, 사용률, 마운트지점 순으로 나타난다. USB메모리나 SD카드의 저장공간도 여기서 확인이 가능하다. -h 옵션을 사용하면 사람이 보기 좋게 메가(M), 기가(G) 단위로 디스크 공간을 확인할 수 있다.

image

파일시스템 주요 명령어 (묶음/압축) – tar (tape archive)

$ tar [OPTION] [FILE] [PATH]
  • tar cvf myzip.tar dir1 :tar 아카이브 만들기
  • tar xvf myzip.tar :tar 아카이브 풀기

image

옵션

  • c : create (생성)
  • x : extract (해지)
  • v : verbose (디테일한 상황 보고 - 실행 중 파일 목록 출력)
  • f : file (저장될 파일명 지정하기 위해)
  • t : list (목록 확인)
  • z : zip (압축)
  • j : bzip2 (압축)

image