ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파일 종류
    linux/centOS 2018. 6. 7. 01:43

     

    파일의 종류

    일반 파일(Egular File)

    디렉토리 파일(Directory File)

    링크 파일(Link File)

    장치 파일(Device File)

    소켓 파일(Socket File)

    도어 파일(Door File)

    파이프 파일(Pipe File)

     

     

    파일과 디렉토리의 내용들을 다루기 위해서는 위와 같은 기본적인 명령어에 익숙해져야 한다. 리눅스 시스템에서 파일의 구조(File Structure) 파일이름, Inode (Index Node)와 데이터 블럭(Data block)로 구분할 수 있다. 파일의 이름은 유일해야 하고 대소문자는 다른 문자로 인식하게 된다. Inode는 파일의 속성정보와 데이터 블럭을 포인트하는 정보가 들어 있으며 ls 명령어에 -l 옵션을 사용하여 대부분의 정보를 확인 할 수 있다. 데이터 블록안에는 실제 파일에 저장되는 내용이 들어가게 된다. 일반파일, 디렉토리, 심볼릭링크 파일들은 모두 하나이상의 데이터 종류를 저장한다. 하지만 디바이스 파일은 데이터를 저장하지 않는다. 대신에 디바이스 파일은 디바이스 제어접근(Access)을 제공한다.

     

     

     

    1. 일반파일

     

    리눅스에서는 모든 것을 파일로 다룬다. 일반 파일, 디렉토리 파일, 링크 파일등이 있다. 파일의 종류에 관한 정보는 ls 명령어의 -l 옵션을 사용하여 출력되는 화면에 첫 번째 문자에서 확인이 가능하다. 또한 file 명령어에 파일의 이름을 인자로 받아서 파일의 종류를 확인 할 수도 있다.

     

    문자

    파일 종류

    -

    일반 파일(Egular File)

    d

    디렉토리 파일(Directory File)

    b

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

    c

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

    l

    심볼릭 링크(Symbolic Link File)

     

     

    (1) 파일의 이름

     

    리눅스 시스템에서 파일의 이름은 파일을 접근하기 위해 사용한다. 파일은 Inode와 함께 파일의 구성요소로서 같은 디렉토리 안에서 파일의 이름은 유일한 것이어야 한다. 예를 들어 현재 디렉토리 밑에 존재하는 디렉토리와 같은 이름은 일반파일을 생성 할 수는 없다.

     

    (2) Inode

     

    Inode는 파일에 대한 정보를 담고 있는 부분이다. 일반적으로 Inode에는 크게 두가지 부분을 포함하고 있다. 첫 번째는 파일에 대한 속성정보(Ownership, Groupship, File Permission Mode)와 데이터 블록을 가리키고 있는 포인터(Direct/Indirect Pointer)이다. Inode는 숫자로 되어져 있으며 각 파일 시스템은 자신의 Inode 테이블(Inode Tables)을 가지고 있다. 파일이 새로운 파일시스템이 만들어지는 경우 파일시스템 안에서는 새로운 Inode 번호을 할당 받게 된다.

     

    (3) Data Block

     

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

     

     

    일반파일은 리눅스에서 찾을 수 있는 거의 대부분의 파일종류이다. 데이터 블록에 들어가는 데이터는 많은 형태는 ASCII (American Standard Code for Information Interchange) 텍스트, 바이너리 데이터, 이미지 데이터, 데이터베이스 데이터, 애플리케이션 데이터 등이 있다. 일반파일을 만드는 방법 또한 많다.

     

    예를 들어 vi 편집기를 사용 할 수도 있고, 컴파일을 통해 바이너리를 생성 할 수도 있고, touch 명령어를 통해 빈 파일을 생성 할 수도 있다.

     

     

     

    2. 디렉토리 파일

     

    디렉토리의 데이터 블록 안에는 실제 디렉토리가 포함하고 있는 파일과 디렉토리에 대한 정보를 가지고 있다. 파일의 이름, 디렉토리의 이름 Inode 번호를 저장하고 있다. 디렉토리의 데이터 블록 안에는 어떤 파일 종류이든 파일의 종류에 맞는 정보가 들어 갈수 있다.

     

     

    3. 링크 파일

     

    링크 파일

    - 하드링크 파일(Hard Link File)

    - 심볼릭링크 파일(Symbolic Link File), 소프트 링크 파일(Soft Link File)

     

     

     

    (1) 하드 링크 (Hard link)

     

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

     

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

     

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

     

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

     

     

     

    (2) 심볼릭 링크, 소프트 링크 (Symbolic link, soft link)

     

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

     

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

     

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

     

     

    [명령어 형식]

    # ln file1 file2

    # ln -s file1 file2

     

    (하드링크) # ln file1 file2

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

     

    [명령어 옵션]

    옵션

    설명

    -b, --backup

    대상 파일이 있다면 백업파일을 생성한다.

    -f, --force

    링크를 생성할 대상 파일이 있더라도 강제적으로 새로운 링크를 생성한다.

    -i, --interactive

    링크를 생성할 대상 파일이 있을 경우, 삭제 유무를 사용자에게 물어 본다.

    -n, --no-dereference

    링크할 원본이 심볼릭 파일이면, 그 심볼릭 파일의 대상 파일을 추적하여 링크한다.

    -s, --symbolic

    링크할 원본이 심볼릭 파일이면, 심볼릭 파일을 링크한다.

    -S, --suffix backup-suffix

    링크를 생성할 대상 파일이 이미 있을 경우, 이전의 대상파일을 백업할 파일의 확장자를 지정한다.

    -V, --version-control

    {numbered, existing,

    simple}

    백업하는 방법을 지정한다.

    t,numbered : 항상 번호로 된 백업파일을 만든다.

    nil, existing : 대상파일이 있을 경우에만 백업파일을 만든다.

    never, simple : 간단한 백업을 만든다.

     

     

     

    4. 디바이스 파일

     

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

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

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

     

     

    블럭 디바이스 파일

    블럭 단위로 I/O 발생

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

     

    캐릭터 디바이스 파일

    바이트 단위로 I/O 발생

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

     

    Major Device 번호

    장치의 종류

    장치의 종류가 틀리면 Major Device 번호가 틀리다.

     

    Minor Device 번호

    개별적인 장치의 종류 또는 동작 방법의 차이

    개별적인 장치의 종류가 틀리면 Minor Device 번호가 틀리다.

    또는 같은 장치라도 동작 방법이 틀리면 Minor Device 번호가 틀리다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    'linux > centOS' 카테고리의 다른 글

    vi 편집기  (0) 2018.06.10
    파일 속성 관리  (0) 2018.06.07
    디렉토리 파일 관리4  (0) 2018.06.06
    디렉토리 파일 관리3  (0) 2018.06.05
    디렉토리 파일 관리2  (0) 2018.06.02

    댓글

Designed by Tistory.