본문으로 바로가기

파일의 종류

category Linux/Linux 기초 2017. 9. 3. 14:44

 

node는 파일의 속성정보와 데이터 블럭을 포인트하는 정보가 들어 있으며 ls 명령어에 -l 옵션을 사용하여 대부분의 정보를 확인 할 수 있다. 데이터 블록안에는 실제 파일에 저장되는 내용이 들어가게 된다. 일반파일, 디렉토리, 심볼릭링크 파일들은 모두 하나이상의 데이터 종류를 저장한다. 하지만 디바이스 파일은 데이터를 저장하지 않는다. 대신에 디바이스 파일은 디바이스 제어접근(Access)을 제공한다.

  • 일반 파일


문자

파일 종류

-

일반 파일(Egular File)

d

디렉토리 파일(Directory File)

b

블록 디바이스 파일 (Block Device File, () /dev/sha, /dev/hda, /dev/fd0)

c

문자 디바이스 파일 (Character Device File, 입출력 장치)

l

심볼릭 링크(Symbolic Link File)


-파일의 이름

파일의 이름 생성 시 규칙

파일의 이름은 최대 255자까지 생성이 가능하다.

파일의 이름은 문자와 숫자를 사용 할 수 있으며 대소문자를 구별한다.

파일의 이름으로 .(Dot), _(Underbar), -(Dash) 사용가능하다.

파일의 이름으로 특수문자(Metacharater)를 사용하면 안된다.

대표적인 특수문자는 *(Aterisk), /(Slash), \(Back Slash), ,(Comma), '(Single Quote), "(Double Quote) (Semicolon), &(Ampersand), |(Pipeline), <(Angle Blocket)등이다.

“.(Dot)”로 시작하는 파일의 이름은 시스템의 환경파일들이므로 일반파일의 이름으로 권장하지 않는다.

파일의 이름에 공백이나 탭을 사용하는 것을 권장하지 않는다.


- inode 

Inode는 숫자로 되어져 있으며 각 파일 시스템은 자신의 Inode 테이블(Inode Tables)을 가지고 있다. 파일이 새로운 파일시스템이 만들어지는 경우 파일시스템 안에서는 새로운 Inode 번호을 할당 받게 된다.

[참고] Inode의 정보

파일의 종류(File Type)

파일의 퍼미션모드(File Permission Mode)

파일의 소유자, 그룹(File Ownership, Groupship)

파일의 링크수(Hard Link Count)

파일의 마지막 접근 시간(Access Time), 수정시간(Modification Time)

파일의 크기(Bytes, 할당된 또는 사용중인 데이터블럭의 수)

두가지 형태의 포인터(Directe Pointers and Indirect Pointers)


- Data Block

데이터블럭은 디스크 공간에 대한 단위(Units of Disk Space)로서 데이터를 저장하는 역할을 가진다. 일반파일, 디렉토리, 심볼릭 파일들은 데이터 블록을 사용하지만 일반파일과 다른 구조를 가지고 있는 디바이스 파일은 데이터블럭에 데이터를 저장하지 않고 주 디바이스 숫자(Major Device Number)와 부 디바이스 숫자(Minor Device Number)를 담고 있다.


  • 디렉토리 파일


  • 링크 파일


    • 하드링크 파일

원본파일의 경로를 저장하고 있는 파일을 말한다. 파일을 실제 경로가 아니라 사용하기 편리한 다른 경로로 접근할 수 있도록 지정하는 명령어이다. 링크파일의 type은 "ls -l" 했을 때 맨 앞의 글자가 “l"로 표시되어 있다.


하드 링크는 똑같은 파일크기로 원본 파일이 수정될 경우, 하드 링크된 파일도 원본과 동일하게 변경되며 항상 같은 내용을 유지할 수 있다. 원본이 삭제되어도 원본과 동일한 내용을 가지고 있으므로 자원을 공유하되 데이터를 안전하게 관리하고자 할 때 유용하게 사용할 수 있다. 하드링크는 디렉토리에는 만들 수 없다.


하드 링크는 파일명이 하나 더 만들어져 동일한 I-node 번호를 가르키게 된다. 하드 링크는 같은 I-node 번호를 저장하고 있으므로 원본 파일을 지워도 원본파일의 파일명만 지워질 뿐 inode가 지워지는 것이 아니기 때문에 링크로 inode값을 가르키는 링크 파일에 영향을 미치지 않는다.


원본 파일과 링크 파일의 권한은 항상 같다. 그 이유는 I-node에 권한이 저장이 되어 있기 때문이다. 즉 파일명에 대해서 권한을 부여하는 것이 아니고 inode번호에 대해 권한을 설정하기 때문이다. 이는 각기 다른 이름을 가진 하드링크의 파일명에 대한 권한을 변경해줘도 파일명에 권한 설정이 되는 것이 아니기 때문에 서로 다른 이름을 가진 하드링크 파일의 권한은 동일하게 유지가 되는 것이다.


[명령어 형식]

# ln file1 file2

# ls -li

5489017 -rw-r--r-- 2 root root 5 Feb 13 13:06 file1

5489017 -rw-r--r-- 2 root root 5 Feb 13 13:06 file2


    • 심볼릭링크 파일

일반적으로 링크라고 하면 심볼릭 링크를 말한다. 심볼릭 링크는 소프트 링크라고도 하며 불필요한 파일의 복사를 하지 않아도 된다. 보통 여러 디렉토리에서 동일한 라이브러리를 요구할 경우나, 하나의 파일을 여러 사람이 공통으로 사용할 경우도 많이 쓴다. 소프트 링크의 퍼미션은 모든 유저에게 모든 권한(rwxrwxrwx=777)을 준다.


포인트 하는 정보가 들어 있을 뿐 원본파일은 아니다. 심볼릭 size는 포인트 정보만 들어 있어 cat으로 보여지는 정보가 많던 적던간에 동일한 size를 갖는다. 따라서 윈도우에서 바탕화면에 바로가기가 되어있어도 많은 양의 리소스를 차지하지 않고 포인트 정보를 담은 size만이 disk의 공간을 차지하게 된다.


원본파일이 지워지게 되면 링크 파일에 영향을 미치게 된다. 소프트링크 파일의 권한은 항상 모든 권한이다. 


[참고]  소프트 링크 파일의 퍼미션이 777인 이유 

소프트링크를 만드는 이유는 모든 사용자가 자원을 공유하려 할 때 많이 사용하기 때문이다. 그런데 소프트링크파일은 그 안의 데이터 블록에 원본파일의 inode의 경로를 포함하는 것이므로 링크파일의 퍼미션이 모든 권한이라 하더라도 실제로는 원본 파일의 권한을 따르게 된다. 링크파일의 퍼미션을 변경하면 원본 파일의 퍼미션이 변경이 된다.


[명령어 형식]

# ln -s file1 file2

# ls -li

5489017 -rw-r--r-- 1 root root 10 Feb 13 13:14 file2

5488913 lrwxrwxrwx 1 root root  5 Feb 13 13:18 file3 -> file2


[하드링크&심볼릭 링크]

하드링크(# ln file1 file2)                심볼릭 링크(# ln -s file1 file2)

두개의 파일의 inode 번호가 동일한가?         동일하다                                        동일하지 않다

ls -li 특이한 변화는?                                파일의 링크 개수 증가                       퍼미션/ 용량 / 파일의 이름 변화

두개의 파일 사이즈는 동일한가?                 동일하다                                        동일하지 않다. ( 링크 파일이 더 적음)

file2의 편집하면?                                     file1도 영향을 받는다.                        file1도 영향을 받는다.   


파일시스템에을 넘어서 링크를 걸수 있는가? 없다.                                               있다

디렉토리에 링크를 걸수 있는가?                없다.                                               있다.


(주의) 심볼릭 링크는 일반적으로 상대경로 사용하지 않는다.

(X) # ln -s dir1 dir2 

(0) # ln -s /test/dir1 /test/dir2 


( 실무 예 ) 웹서버(WAS 서버)에서 웹소스 디렉토리 마이그레이션 하는 작업

-------DAUM Web Server------            ------Web Client--------

httpd(80)                    <----------    http://www.daum.net:80

/was/index/html

작업 : /was ---> /zeus       

 /* was를 zeus로 바꿔야하는대 서비스를 내려야 작업할 수 있다. 그러나 링크를 걸어두면 was를 접속해도 zeus 로 접속해 새로운 서비스가 가능하다. 완전히 옮기는 작업은 정해진 시간에 해야하지만 급한 서비스를 올릴땐 서비스를 내리지 않고 링크를 사용할수 있다.*/


ln -s /was /zeus


  • 장치 파일

[용어]

-장치(Device)

-장치 파일(Device File, Special File, Special Device File)  /dev

-장치 드라이버 (Device Driver) OS(Kernel)이 장치를 사용할 수 있도록 연결 (장치이름 들어있음)


디바이스 파일(장치 파일, Device File)

- 블럭 디바이스 파일(Block Device File)

- 캐릭터 디바이스 파일(Character Device File) = Raw Device File

I/O 의 차이     /dev/*

b 블록 단위로 I/O 수행 성능 상승 큰 파일들 (CD DISK...) 4K 8배

c 캐릭터 단위로 I/O 수행 byte (항상 존재 ) 1 sector = 512 byte


블럭 디바이스 파일

블럭 단위로 I/O 발생

디스크 디바이스(Disk Device)이면 I/O 단위는 4K(4096 Bytes) 


캐릭터 디바이스 파일

바이트 단위로 I/O 발생

디스크 디바이스(Disk Device)이면 I/0 단위는 512 Bytes(1 Sector = 512 bytes) 



'Linux > Linux 기초' 카테고리의 다른 글

리눅스 기초 명령어_2  (0) 2017.09.03
리눅스 기초 명령어_1  (0) 2017.08.27
원격 접속과 파일 전송  (0) 2017.08.24
프로세스 관리  (0) 2017.08.24
쉘(shell)의 특성  (0) 2017.08.23