리눅스 파일 시스템
리눅스 파일 시스템에서는 / (Root) 에서 파일 관리가 시작한다. (윈도우에서는 C: 같은 드라이브에서 시작)
리눅스는 Root를 기준으로 Tree 형태의 파일 시스템을 갖고 있음
Root로 이동해서 파일트리를 확인해보자
아래 명령어를 치면 구조를 볼 수 있다. (hier은 hierarchy를 뜻함)
man hier
/bin - 바이너리
ls, cp, cd 같은 기본 Shell 명령의 실행 파일이 있다.
대부분 프로그램은 여기 바이너리의 형태로 있고 리눅스 시스템의 모든 유저들에게 접근 가능하다.
/dev - Device files
물리적 장치가 파일화되어 저장되는 곳이다. 시스템 디바이스 파일을 저장하고 있는 디렉토리다.
이 파일들은 물리적으로 디스크에 있는 것이 아니라 가상화된 파일들이다.
블루투스 장치를 연결하면 여기에 파일이 생성되는 것을 확인할 수 있다.
/etc - Configuration files
관리자와 서비스에서 사용되는 시스템 구성(system configuration) 파일들이 있다. 암호 파일과 네트워킹 파일 등이 여기에 포함된다.
시스템 구성을 변경한 경우 해당 파일에서 변경되는 것을 확인할 수 있다.
/usr
모든 실행 파일, 라이브러리, 대부분의 시스템 프로그램 소스가 있다. 그래서 여기 있는 대부분의 파일은 읽기 전용이다.
- /usr/bin: 기본 사용자 명령
- /usr/sbin: 관리자를 위한 추가 명령
- /usr/lib: 시스템 라이브러리
- /usr/share: 모든 라이브러리의 공통된 문서가 포함. 예를 들면 /usr/share/manual 에는 메뉴얼 페이지의 텍스트가 있다!
/home - 개인 사용자 데이터
홈 디렉토리에는 사용자 데이터와 사용자별 구성 파일이 들어있다.
Linux 시스템에서는 사용자를 만들 때 일반적으로 사용자 홈 디렉토리를 만든다. /home/hyndrome , /home/otherUser 위치에 각각 홈 디렉토리를 갖게 됨
명령어 "cd ~" 를 입력했을 때 이동하는 경로가 여기다!
/lib - 실행가능한 바이너리에서 사용할 수 있는 코드. /bin, /sbin 디렉토리의 바이너리에서 필요한 라이브러리를 보관한다.
/usr/bin 과 /usr/sbin 에 있는 바이너리에 필요한 라이브러리는 /usr/lib 디렉토리에 보관되어 있다.
/sbin - 시스템 바이너리
/bin 디렉토리와 비슷하나 루트나 sudo 사용자만 실행할 수 있는 바이너리를 포함. s를 super나 sudo로 생각하면 된다.
/tmp - 임시 파일
임시 파일을 보관하는 곳. 많은 애플리케이션이 이 디렉토리를 사용하여 임시파일을 저장한다.
일부 Linux 시스템은 오래된 파일을 자동으로 삭제하므로 중요한 것은 여기에 저장하면 안된다.
/var - 변수 데이터 파일
시스템 로깅, 사용자 추적, 캐시 및 시스템 프로그램에서 만들고 관리하는 다른 파일과 같은 런타임 정보를 저장하는 곳이다.
여기 저장된 파일은 자동으로 정리되지 않아서 시스템 관리자가 시스템 동작 정보를 정리할 수 있는 곳을 제공한다. 예를 들면 Linux 로그인 정보를 확인하고 싶으면 /var/log/wtmp에 있는 파일의 내용을 확인해보자!
/boot - Boot files
LILO, GRUB 같은 부트로더 파일과 외에 kernel 이미지 같은 부팅 관련 파일을 포함한다.
디렉토리가 디스크 시작부분의 파티션에 있는 것이 좋다
kernel 이미지: 컴퓨터가 부팅될 때 로드되는 커널의 바이너리 파일
LILO: Linux에서 사용되던 초기 부트로더, 현대에는 잘 사용되지 않음
GRUB (GRand Unified Bootloader): 멀티부팅과 실시간 수정이 가능한 더 강력하고 유연한 부트로더
부트로더: 컴퓨터가 켜질 때 실행되는 첫 번째 소프트웨어로, 운영체제를 메모리에 로드하고 실행을 시작한다. 하드웨어 초기화, 커널로드, 부팅 옵션을 제공한다
/proc - process, kernel 파일
해당 경로에는 현재 실행 중인 프로세스와 커널 매개변수에 대한 정보가 들어있다. 해당 디렉토리의 내용은 여러 도구에서 런타임 시스템 정보를 얻는데 사용된다.
예를 들어 Linux에서 프로세서 정보를 확인하려면 /proc/cpuinfo 파일을 참조하면 된다.
Linux 시스템 메모리 사용량을 확인하려면 /proc/meminfo 파일을 참조하면 된다.
/opt - 추가 응용프로그램 패키지
추가 응용프로그램 패키지 설치 장소이다. 관례적으로 배포판 레포지토리에서 사용할 수 없는 서드파티 애플리케이션을 설치 저장하는 곳이다. 보통 소프트웨어 코드를 opt 에 보관하고 모든 사용자가 실행할 수 있도록 /bin 디렉토리에 있는 바이너리 파일을 링크한다.
/root - 루트의 홈 디렉토리
/home/root 대신에 루트의 홈은 /root에 위치한다
/media - 이동식 미디어의 마운트 지점
USB, SD카드, DVD 같은 이동식 미디어를 연결하면 /media 디렉토리 아래에 해당 미디어에 대한 디렉토리가 자동으로 생성된다. 여기서 콘텐츠에 엑세스할 수 있다.
/mnt - 사용자 마운트 지점
/media와 비슷한데 차이점은 /media은 OS가 자동으로 마운팅해주는 포인트고
/mnt는 사용자가 수동으로 마운트하는 경로다.
/srv - 서비스 데이터
시스템에서 제공하는 서비스에 대한 데이터가 들어있다. 예를 들면 HTTP 서버를 실행하는 경우 웹 사이트 데이터를 /srv 디렉토리에 저장하는 것이 좋다.