강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 리눅스 파일의 종류

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 리눅스 파일의 종류



 

 

 

파일 형식과 퍼미션

 

1) 파일의 종

리눅스 시스템에는 일반 파일, 디렉토리 및 특수 파일의 3가지 종류의 파일이 있다.

 

 

 

 

 

종류

의미

일반 파일(regular file)

일반적으로 텍스트 파일이나 이진 파일을 나타냄

디렉토리 파일(directory file)

특별한 형식으로 디스크에 저장되며 디렉토리 명시적 시스템 호출을 통해서만 참조

특수 파일(special file)

프린터, CD-ROM, 디스크와 같은 주변 장치, 프로세스 간 상호 통신

 

 

 

일반 파일

 

일반 파일은 보통 우리가 평상시 쓰는 파일을 가리킨다.

 

 

 

이러한 파일은 어떤 데이터를 가지고 있으면서 이름을 가지고 디스크, CD-ROM 등과 같은 저장 장치에 기록되어 있다.

 

 

 

보통 우리가 문서를 편집하여 작성한 후 저장하면 일반 파일로 저장된다.

 

 

 

명령어를 통하여 이러한 파일을 복사하고, 삭제하고, 이동시킬 수 있다.

 

 

 

문서 파일이란 키보드를 사용하여 입력한 값만을 가지고 있다.

 

 

 

, 파일은 ASCII 문자로만 구성된다.

 

 

 

ASCII 문자는 대소문자, 숫자, 공백, , 문장 부호 및 제어 문자를 포함하는 128개의 코드로 구성된다.

 

 

 

이러한 문서 파일은 간단한 문서, 메모, 쉘 스크립트를 만들 때 사용하는 “emacs”, “vi”, “ed”, “cat” 등과 같은 프로그램에 의해 만들고 편집할 수 있다.

 

 

 

, 문서 파일은 눈으로 봐서 바로 이해할 수 있는 문장으로 구성되어 있는 파일을 말한다(“man ascii” 명령에 의해 이것에 대한 상세한 사항을 알 수 있다).

 

이진 파일은 위와 같은 문자가 아닌 컴퓨터가 이해할 수 있는 데이터 파일이 들어 있다.

 

 

 

만약 이진 파일을 vied와 같은 편집기로 보려고 하면 이상한 문자로 보여 이해할 수 없을 것이다.

 

 

 

보통 이진 파일은 01의 값으로 구성되며 컴퓨터가 데이터를 읽고 작업을 수행하므로 실행 파일이라고 부른다.

 

 

 

그렇지만 실행 파일 중에서도 쉘 프로그램 같은 경우에는 인터프리터(Interpreter)에 의해 실행되므로 실행 파일이지만 문서 파일이다.

 

 

 

문서 파일과 이진 파일의 구별은 다른 기종 간에 파일을 옮길 때 매우 중요하다.

 

 

 

대부분은 두 가지 유형의 데이터를 옮길 때에는 서로 다른 명령어를 사용한다.

 

 

 

따라서 사용자는 어떤 유형의 파일을 사용하고 있는지를 알 필요가 있다.

 

 

 

 

 

 

디렉토리 파일

 

 

디렉토리(Directory)는 파일과 마찬가지로 디스크에 저장되어 있으면서 다른 파일을 조작하고 액세스하는 데 필요한 정보를 가지고 있다.

 

 

 

보통 디렉토리는 파일을 포함하고 있다고 생각하면 된다.

 

 

 

디렉토리에 저장되어 있는 파일은 앞에서 설명한 보통 파일, 특수 파일, 디렉토리 파일이다.

 

 

 

그런데 실제로 디렉토리 안에 들어가 보면 실제 파일을 포함하고 있는 것이 아니라 리눅스가 파일을 액세스하는 데 필요한 정보를 가지고 있을 뿐이다.

 

 

 

 

또한 디렉토리는 다른 디렉토리를 포함할 수 있으며 트리(tree) 구조의 계층적 구조를 가진다.

 

 

 

 

파일 시스템에서의 디렉토리는 서로 연관이 있는 파일들을 하나의 그룹으로 만들어서 저장할 수 있도록 구분된 공간을 의미하는데, 관련이 없는 다른 파일은 다른 디렉토리에 저장되어 섞이지 않게 한다.

 

 

 

이와 같은 방법은 계층적인 파일 시스템을 사용하기 위해 사용한다.

 

 

 

이렇게 디렉토리는 다른 디렉토리를 포함하면서 디렉토리들을 트리 모양으로 보기 편하고 사용하기 좋게 구성한다.

 

 

 

 

리눅스 시스템은 파일 시스템에 저장되어 있는 모든 파일과 디렉토리가 어디에 위치하고 있는지, 언제 변경되었는지, 파일의 크기는 얼마나 되는지에 대한 정보를 가지고 있어야 하는데, 이러한 정보는 해당 디렉토리에 저장하지 않고 단지 파일이름과 아이노드(Inode) 번호만을 가지고 관리한다.

 

 

 

만약 새로운 디렉토리를 만들면 기본적으로 “.”“..”이 현재 디렉토리 밑에 자동으로 생성된다.

 

 

 

“.”은 디렉토리 자신을 가리키며 “..”은 부모 디렉토리를 가리킨다.

 

 

 

이 두 가지는 사용자에 의하여 삭제될 수 없으며, 한 디렉토리에 이것만 존재하면 그 디렉토리는 빈 것으로 볼 수 있다.

 

 

 

다음은 새로운 디렉토리를 생성했을 때를 보여주고 있다.

 

 

 

 

 

 

 

 

 

[root@SUK121 ~]# cd /tmp

[root@SUK121 tmp]# mkdir temp

[root@SUK121 tmp]# cd temp

[root@SUK121 temp]# ls -al

합계 12

drwxr-xr-x 2 root root 4096 920 08:14 .

drwxrwxrwt 7 root root 4096 920 08:14 ..

[root@SUK121 temp]#

 

 

 

 

 

 

 

 

사실 디렉토리 이름은 디렉토리 블록에 저장되므로 아이노드에 저장되지 않으며, 대부분은 <파일 이름, Inode>와 같이 연결한다.

 

 

 

이렇게 연결하는 것을 하드링크(Hard Link)라고 한다.

 

 

 

보통 리눅스 시스템은 파일 이름을 작성하기 위하여 14개의 문자를 허용했지만 지금은 더 긴 파일 이름도 지원하고 있다.

 

 

 

아이노드 테이블은 파일 이름과 아이노드 번호가 저장되어 있으며, 각 아이노드 번호는 현재의 계층 구조상에서 얼마만큼 위치해 있는지에 따라서 자동으로 부여된다.

 

 

 

예를 들어 “bin” 아래에 있는 “ls” 명령을 찾기 위해서는 먼저 현재 디렉토리상의 아이노드를 가져오고, 다음에 “bin” 디렉토리를 검사하고 “bin” 디렉토리의 아이노드를 검사하여, “ls” 명령어를 찾아낸다.

 

 

 

 

 

특수 파일

 

 

특수 파일(Special file)은 리눅스가 자원을 관리하는 디바이스(device)를 가리킨다.

 

 

 

리눅스는 다른 모든 버전의 유닉스와 마찬가지로 하드웨어 장치들을 특수 파일로 보여준다.

 

 

 

예를 들어 우리가 보통 사용하는 윈도우즈 시스템에서 하드 디스크 장치(Hard Disk Device)를 추가하면 보통 “C:”, “D:” 등으로 표시되는데, 리눅스 시스템에서는 “/dev/sda1”, “/dev/sda2” 등과 같이 사용한다.

 

 

 

여기에서 디바이스란 컴퓨터의 모든 자원, 즉 키보드, 마우스, 모니터, 디스크 드라이브 등이 될 수 있다.

 

 

 

다른 예를 들자면 /dev/null은 널(Null) 장치이다.

 

 

 

장치 파일은 파일 시스템에서 아무런 데이터 영역도 차지하지 않는다.

 

 

 

단지 디바이스 드라이버로의 접근점일 뿐이다.

 

 

 

ext4 파일 시스템(ext2 ext3도 동일)과 리눅스 VFS는 모두 장치 파일을 아이노드의 특수한 유형으로 구현한다.

 

 

 

장치 파일에는 문자 특수 파일과 블록 특수 파일이라는 두 가지 형태가 있다.

 

 

 

커널 안에서 디바이스 드라이버는 파일처럼 구현되어 있다.

 

 

 

, 이를 열고 닫는 등의 일을 할 수 있다.

 

 

 

문자 장치는 문자 모드로 I/O 작업을 할 수 있으며, 블록 장치는 모든 I/O가 버퍼 캐시를 통하도록 되어 있다.

 

 

 

장치 파일로 I/O 요구를 하면, 이는 시스템 내에 있는 해당하는 디바이스 드라이버로 전달된다.

 

 

 

종종 이는 실제 디바이스 드라이버가 아니라, SCSI 디바이스 드라이버 계층과 같은 어떤 서브 시스템을 위한 유사 디바이스 드라이버이기도 하다.

 

 

 

장치 파일은 장치의 유형을 구분하는 메이저 번호와 한 덩어리 또는 그 메이저 유형의 한 사례를 구별하기 위한 마이너 유형으로 참조한다.

 

 

 

예를 들어 첫 번째 시스템에서 IDE 컨트롤러에 있는 IDE 디스크들은 메이저 번호로 3을 가지며, IDE 디스크의 첫 번째 파티션은 마이너 번호로 1을 가진다.

 

 

 

따라서 ls l /dev/hda1을 하면 다음과 같은 출력을 보여준다.

 

 

 

 

 

 

 

 

 

[root@SUK121 ~]# ls -l /dev/hda1

brw-r----- 1 root disk 3, 1 425 01:43 /dev/hda1

[root@SUK121 ~]#

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,056 명
  • 현재 강좌수 :  35,925 개
  • 현재 접속자 :  252 명