Linux 디렉터리 및 파일 종류

2017. 4. 16. 19:37Linux




< 계층적 디렉터리 구조 > 


1. 루트디렉터리 [ / ]

- root디렉터리는 리눅스 시스템에서 가장 최상위 디렉터리, 디렉터리 구조의 시작이다

- 디렉터리를 생성하기 위한 기준이 되는 표시


2. 기본 실행 명령어 디렉터리 [ /bin ]

- binaries

- 기본 명령어 파일들이 2진수의 형태로 모여있는 디렉터리

- 시스템을 관리하는 명령어를 제외한 대부분의 일반적인 명령어들이 있다


3. 시스템 운영 명령어 디렉터리 [ /sbin ]

- system binaries

- 시스템 관리 ( 부팅, 복구, 보수 ) 를 위한 명령어들이 모여 있는 디렉터리

- 시스템 운영에 필요한 명령어들을 포함하고 있고, root만이 사용할 수 있는 명령어들로 구성된다


4. 시스템 설정 파일 디렉터리 [ /etc ]

- 리눅스 시스템에 대한 환경설정과 관련된 파일들과 디렉터리를 가진 디렉터리이다

- 사용자 관리를 위한 암호관련파일( shadow , gshadow ) , 네트워크정보를 보유한 파일 등 시스템 관리에 전반적인 파일들이 존재한다.


5. 부팅 관련 파일 디렉터리 [ /boot ]

- 리눅스 커널(Kernel)이 저장되어 있는 디렉터리로서 각종 리눅스 부트에 필요한 부팅 지원파일이 저장되어 있는 디렉터리이다


6. 입출력 장치 연결 마운트 디렉터리 [ /mnt ]

- mount directory

- 입출력장치와 연결할 때 마운트 하게 되면 해당 파일 시스템의 내용이 그대로 저장된다


7. 임시 마운트 디렉터리 [ /media ]

- CD/DVD or FDD , USB 등이 임시로 마운트 되는 역할을 수행하는 디렉터리


8. 응용 패키지 프로그램 설치 디렉터리 [ /usr ]

- ProgramFiles 폴더와 같은 역할을 한다

- 거의 모든 프로그램과 그에 관련된 명령어 및 라이브러리들이 위치한다


9. 공유 라이브러리 디렉터리 [ /lib ]

- 플그램들의 각종 라이브러리들이 존재한다


10. 일반 사용자들의 홈 디렉토리 [ /home ]

11. 시스템 디바이스 장치 파일 디렉터리 [ /dev ]

- 시스템의 각종 장치들을 사용할 수 있도록 장치 드라이버들이 저장되어있다

- 리눅스시스템에서는 각종 장치들을 각각 하나의 파일로 취급하기 때문에 각 장치를 설치하는데 필요한 정보를 이 디렉터리에서 가져온다


12. 가상 파일 시스템 디렉터리 [ /proc ]

- 시스템의 각종 프로세스와 프로그램 정보 및 하드웨어적인 정보들이 저장된다

- 물리적인 하드디스크의 용량을 사용하는 것이 아니고 커널에 의해 메모리에 저장된다


13. 가변 자료 저장 디렉터리 [ /var ]

- 시스템에서 사용되는 동적인 파일 , 즉 변경되는 파일들을 저장

- 각종 시스템의 로그파일 , 사용자 로그인에 대한 보안 기록 등등


14. 임시 파일 저장 디렉터리 [ /tmp ]

- 프로그램 수행 과정에서의 임시 파일들을 저장한다


< 파일 >


1. 파일의 구성 요소

- 리눅스에서는 모든 처리 과정이 파일 단위로 구성되며, 계층적인 구조의 특성을 가진다

- 파일은 '파일 이름' , 'I-node' , '데이터 블록' 세가지 요소를 가지고 있어야 존재의 가치를 가진다


1_1. 파일 이름

- 사용자가 파일을 접근하고 구분,조작하는데 사용하기 위해 필요하다

- 대/소문자를 구분하기때문에 같은 철자여도 다른 파일 이름으로 인신된다 !!

- 특별한 확장명 형식이 없어서 파일이름이 매우 중요하다


1_2. I-node

- index-node

- 파일을 기술하는 데이터 상의 데이터 구조

- 파일의 데이터 블록이 디스크 상의 어느 주소에 위치하고 있는가에 대한 정보를 기록

- 리눅스시스템에서 파일을 생성하기 위해서는 먼저 파일의 데이터를 저장하기 위한 디스크 내의 공간을 확보한다

- 이 때, 파일이 저장될 주소에 대한 정보를 기록하기 위해 I-node는 고유한 식별 번호를 가진다

- 파일의 종류 , 소유권 , 액세스모드 , 파일 갱신일 정보들이 담겨있는 구조체로 표현할 수 있다


1_3. 데이터블록

- 디스크 장치에 파일을 저장할 때 파일의 실제 데이터는 특별한 구분없이 디스크에 저장된다

- 파일들의 실제 데이터는 어느 한 곳에 쌓여져 있는데 이를 데이터 블록이라한다

- 파일들이 구분되어 지지않으므로 i-node를 이용해서 파일을 구분할 수 있다



2. 파일의 종류


2_1. 일반 파일

- 한글문서 또는 C의 소스파일 등의 자료를 의미한다

- 정보를 저장하는 역할을 한다

- #ls -F => [파일명]


2_2. 디렉터리 파일

- 디렉터리는 I-node에 대한 포인터만 저장하기 때문에 파일의 이름과 그 파일의 I-node를 매핑하는 항목의 리스트로만 구성되어 있다

- #ls -F => [파일명]/


2_3. 링크 파일

- 여러 개의 이름이 하나의 I-node에 연결되므로 실제파일이나 디렉터리 혹은 또 다른 링크를 가리키도록 연결한다

- #ls -F => [파일명]@

2_3_1. 심볼링 링크( Soft_link , Symbolic_link )

- 원본 파일은 그대로 두고 사용하기 이해서 그 파일을 가리키는 기능

- #ln -s [원본파일] [링크파일]

2_3_2. 하드 링크( Hard_link )

- 원본파일과 동일한 I-node를 가지는 파일을 새롭게 생성한다 ( 하지만 용량을 차지하지 않는다는 점에서 #cp 와는 다르다 )

- 원본에서 파일이 수정되면 하드 링크 파일 또한 수정된다 ( 항상 같은 파일의 내용을 유지한다 )

- #ln [원본파일] [링크파일]


2_4. 디바이스 파일

2_4.1 캐릭터 디바이스 파일

- #ls -l => c로 시작

2_4.2 블록 디바이스 파일

- #ls -l => b로 시작


2_5. 파이프 파일

2_6. 소켓 파일( Socket )

- 네트워크의 입출력을 담당하는 API(Application Program Interface)로 두 호스트 컴퓨터 사이의 정보를 전달한다

- 즉, 물리적으로 연결된 네트워크 상에서의 데이터 송수신에 사용할 수 있는 소프트웨어적인 장치이다

-과정

- 소켓생성

- IP주소와 포트 번호 할당

- 연결 요청 가능한 상태로 설정

- 연결 요청에 대한 수락