본문 바로가기
이카루스의 날개/LINUX

리눅스 파일 타입

by 윙혼 2013. 12. 31.


file types


파일타입은 ls 명령어로 확인할수 있다.

ex) ls -l /etc/passwd ; ls -ld /etc ...

출력결과중 첫칼럼이 파일타입.


- : 정규파일 - 아래 몇가지 타입을 제외한 모든 파일은 정규파일이다.

바이너리 코드값이나 아스키코드값등이 저장되어 있는 파일

- 편집기나 컴파일러 등으로 생성할수 있다.


d : 디렉토리파일

파일명과 파일의 inode number 값이 저장되어 있는 파일(파일내용은 디렉토리에 저장되지 않는다)

디렉토리의 크기는 디렉토릭내의 파일크기와는 무관하다.

mkdir 명령어로 생성한다.


l : 링크파일

- 원본파일의 경로가 저장되는 파일.

*. 링크파일의 퍼미션은 항상 rwxrwxrwx.(형식적임)

(링크파일의 실제 퍼미션은 원본파일의 퍼미션을 따른다)

[root /tmp/test]# ln -s /etc/issue issue

[root /tmp/test]# ls -l

lrwxrwxrwx 1 root root 10 10월 23 17:50 issue -> /etc/issue

issue 파일의 데이터블럭에 저장된값은  /etc/issue 이므로 10byte 크기이다.

링크파일을 지워도 원본파일은 지워지지 않는다.

링크파일을 수정하거나 내용을 읽게되면 원본이 수정되거나 읽혀진다.

링크파일은 아래처럼 디렉토리를 대상으로 만들수도 있다.

[root /tmp/test]# ln -s /etc/sysconfig/network-scripts  network

[root /tmp/test]# ls -l

lrwxrwxrwx 1 root root 10 10월 23 17:50 issue -> /etc/issue

lrwxrwxrwx 1 root root 30 10월 23 17:50 network -> /etc/sysconfig/network-scripts

[root /tmp/test]#


장치파일은 block 장치파일과 characer 장치파일이 있으며 입출력 단위에 따라 구분된다.

입출력이 블록단위로 이루어지는것은 블록장치파일이며 character 장치파일은 입출력 단위가

byte 단위이다.

그리고 장치파일은 major number 및 minor number 값이 저장되어 잇는 파일이다.

b : block 장치파일

brw-r----- 1 root disk 8, 3 10월 23 17:03 /dev/sda3 (8 : major number, 3:minor number)


# ls -l /dev/pts/1

crw--w---- 1 root tty 136, 1 10월 23 18:14 /dev/pts/1

터미널 장치는 문자장치파일이다.

*. 장치파일을 생성하는 명령은 mknod 이다.(옵션은 mknod --help 참조)


하드링크 

- 원본과 같은 데이터블럭,같은 inode table 을 사용하는 파일.

그러므로 원본과 링크파일은 구분할 수 없다. 항상 똑같은 내용, 똑같은 속성을

갖는 파일이다.

하드링크는 항상 똑 같은 내용과 속성을 갖고 있어야 하는 파일인 경우에 필요하다.

하드링크 생성방법

ln 소스파일 링크파일

[root /tmp/test]# ln a.txt b.txt

[root /tmp/test]# ls -l

합계 8

-rw-r--r-- 2 root root  6 10월 23 18:21 a.txt

-rw-r--r-- 2 root root  6 10월 23 18:21 b.txt

[root /tmp/test]# ln b.txt c.txt

[root /tmp/test]# ls -l 

-rw-r--r-- 3 root root 6 10월 23 18:21 a.txt

-rw-r--r-- 3 root root 6 10월 23 18:21 b.txt

-rw-r--r-- 3 root root 6 10월 23 18:21 c.txt

*. 링크걸때 마다 하드링크 카운터가 증가한다.

[root /tmp/test]# ls -i

2781371 a.txt  2781371 b.txt  2781371 c.txt

--> 하드링크는 같은 데이터블럭을 사용한다.

(또한 같은 inode table 을 사용한다)

[root /tmp/test]# rm a.txt

rm: remove 일반 파일 `a.txt'? y

[root /tmp/test]# ls -l

합계 8

-rw-r--r-- 2 root root  6 10월 23 18:21 b.txt

-rw-r--r-- 2 root root  6 10월 23 18:21 c.txt

*. 하드링크 파일을 삭제하더라도 링크걸린 다른 파일은 같이 삭제 

되지는 않으며 하드링크 카운터가 감소한다.

댓글