리눅스 파일 시스템과 명령어
23년 이전 글/리눅스

리눅스 파일 시스템과 명령어

디스크 기반 파일 시스템(Disk-Based File System)

 

MINIX

유닉스의 한 갈래인 미닉스에서 사용되던 파일시스템으로, 플로피 디스크 등 작은 크기의 저장소 장치로 사용되는 파일시스템

 

EXT

리눅스 초기 개발 시 리눅스에서 사용하기 위해 만들어진 확장파일시스템. 유닉스의 파일시스템인 UFS의 영향을 받음. 현재 ext2, ext3, ext4 버전 존재

 

XFS

CentOS7, RHEL7 등 최신 리눅스 버전에서 기본으로 사용되는 파일 시스템

 

FAT

현재는 USB등 이동식 저장장치에 사용되고 있으며, 리눅스는 FAT, vFAT파일시스템을 지원

 

ISO9660

ISO 9660 표준에 따른 CD-ROM 파일시스템. 운영체제 및 플랫폼에 무관하게 사용 가능한 표준 방식

 

UDFS

UDF는  ISO/IEC 13346 규격으로 개발되었으며, DVD 표준 파일시스템

 

 

 

파일의 구성

1개 파일 생성을 위해 파일의 이름, I-NODE, Data block이 있어야함

 

I-Node(Index node)

파일에 대한 정보를 가지고 있는 inode가 모여 있는 테이블로, inode는 각각 1개의 파일 또는 디렉토리에 대한 정보를 가짐

 

주요 정보

  • 파일의 종류 및 권한 종료
  • 추가해서 적기-------

 

출처 : https://tecoble.techcourse.co.kr/post/2021-10-18-linux-file-directory-system/

 

링크 파일

윈도우의 바로가기와 같은 파일. 링크라는 개념을 도입 해, 여러개 이름이 하나의 I-node에 연결되도록 수행하여 실제 파일이나, 디렉터리 혹은 다른 링크를 가리킴

파일에는 하드링크와 심볼릭 링크가 존재하며, 링크 파일을 생성하기 위해서는 ln 명령을 사용

 

하드 링크

  • 원본 파일과 동일한 내용의 다른 사본 파일을 만듦
  • 원본 파일 변경시 복사된 링크 파일의 내용 또한 자동 변경
  • 파일의 실제 I-node 정보를 공유하기 때문에 마치 동일한 파일이 여러곳에 존재하는 것처럼 보임

 

심볼릭 링크(또는 Soft Link)

  • 통상 사용되는 링크 파일이 심볼릭 링크
  • 심볼릭 링크 파일을 삭제해도, 원본 파일 영향없음

 

 

특수 파일

  • 리눅스가 지원하는 파이프, 소켓, 주변장치를 의미
  • 운영체제의 C:, D:, E:등과 같은 의미
  • 리눅스 시스템에선 /dev/hda1 등으로 등장함

 

문서 파일과 이진 파일

  • 문서 파일키보드로 입력 받은 값만을 가지고 있으며, ASCII 문자로 구성
  • 이진 파일은 문자가 아닌 데이터 파일이 들어 있으며, 기계어0과 1의 값으로 구성

 

 

디렉터리

 

작업 디렉터리

  • 사용자가 현재 사용하고 있는 디렉터리
  • 상대경로는 (.) 점으로 표시

 

홈 디렉터리

  • 각 사용자에게 할당되는 디렉터리로 사용자 계정 처음 만들 때 지정
  • 홈 디렉터리의 표시는 틸드(~)를 사용함

 

절대 경로와 상대 경로

 

절대경로

  • 루트 디렉터리인 '/'를 기준으로 제공되는 디렉터리
  • 반드시 루트를 의미하는 '/'로 시작해야함
  • 루트 디렉터리부터 중간 단계 디렉터리 모두 표시해야함
  • 특정 위치를 가리키는 절대 경로명은 항상 동일해야함

 

상대경로

  • 셀의 작업 디렉터리가 상대 경로의 기준
  • 자신이 속한 디렉토리는 `.` 으로 표현하고, 상위디렉토리는 `..`
  • / 이외의 문자로 시작해야하고, 현 디렉터리 위치에서 서브디렉터리로 갈 시 파일명 추가
  • 현재 속한 디렉토리에 따라 상대경로는 달라짐

 

 

파일, 디렉터리명 생성 규칙

  • /는 경로를 나타내기 위한 문자로, 이름에 사용할 수 없음
  • .으로 시작하면 숨김 파일로 처리
  • -, _ 외 특수문자 사용 불가

 

 

디렉터리 관련 명령어(출력, 생성, 삭제, 복사, 이동, 찾기)

 

ls

ls [경로] : 해당 디렉터리 경로의 파일, 폴더를 모두 보여준다

옵션

  • -a(all) : 숨겨진 파일까지 포함 모든 파일 리스트 출력
  • -d : 지정 디렉터리 존재하는 파일과 디렉터리 정보 출력
  • -n : 호스트네임 확인
  • -i : 첫번째 열에 I-node 번호 출력
  • -F [경로Optional] : 파일명 뒤에 /는 디렉터리 파일을, @는 심볼릭 링크를, 아무 표시가 없다면 일반 파일
  • -l : 파일에 대한 권한, 그룹 등의 정보까지 표시(정렬)
  • -r : reverse로 정렬함
  • -R : 경로에 모든 폴더 내부 내용을 출력함
  • [경로] : 파일의 존재 여부 체크 가능(찾기용으로 쓸 명령어는 아님)
  • 모든 옵션은 한번에 같이 쓸 수 있음

파일 정보 알파벳 의미

  • - : 일반 정규 파일
  • d : 디렉터리 파일
  • l : 심볼릭 링크 파일
  • b : block 단위 read/write 파일

 

cd 

cd [경로] : 해당 경로로 작업 디렉토리 변경(절대경로, 상대경로 모두 가능)

그냥 cd만 명령할 경우, 해당 계정의 루트 폴더로 이동한다

 

mkdir

  • mkdir [디렉터리명] [디렉터리명] : 디렉터리를 생성함(갯수만큼 가능)

옵션

  • -p [디렉터리명]: 특정 경로에 하위디렉터리 생성을 위해  중간 디렉터리를 알아서 생성함

rmdir

  • rmdir [디렉터리명] [디렉터리명] : 디렉터리를 지움(갯수만큼)

옵션

  • -p [디렉터리명] : 상위 디렉터리를 지울 시, 하위 디렉토리까지 모두 삭제함

 

rm

  • rm [파일] : 파일을 삭제할 수 있음

옵션

  • rm -r [디렉터리] : 디렉터리를 삭제할 수 있으며, 하위폴더도 재귀적으로 삭제

 

touch

  • touch [이름] : 파일을 생성할 수 있음

옵션

  • -t(time) YYMMDDHHMM : 파일 생성 시각 변경

 

cp

  • cp [원본파일경로] [복사할경로]
  • cp [원본파일경로] [원본파일경로] ... [복사할경로] : 다중 항목을 한번에 복사도 가능

옵션

  • -i [원본파일경로] [복사할경로] : 복사할 파일명 또는 디렉터리명이 존재하면 덮어쓸건지 물어보게함
  • -r : 디렉터리 복사할 때 사용
  • -a : 원본파일 속성과 링크 정보 그대로 유지하며 복사
  • -b : 원본파일의 백업본 생성
  • -d : 원본파일이 심볼릭 링크된 파일의 경우, 그 자체까지 복사
  • -f : 복사하고자 하는 파일 이름이 겹칠 경우 강제 복사
  • -l : 하드 링크 형식으로 복사
  • -p : 원본파일 경로가 지정되어 있으면 그대로 복사
  • -r : 디렉터리안에 있는 모든 하위 디렉터리까지 복사
  • -s : 심볼릭 링크 생성

 

find

  • find [찾을디렉터리경로] [검색조건] [옵션] [동작]

옵션

  • -name : 지정한 파일찾기(와일드카드 사용: '*','?','[]') 와일드카드 사용시 작은 따옴표 선언해서 파일이름 정확히 표현
  • -type : 찾는 파일의 타입, b: 블록디바이스 파일, d: 디렉터리, f : 파일, l : 심볼릭링크
  • -user : 지정한 사용자가 소유하고 있는 파일 찾기

예) find / -type d -name 'h*'  : 루트폴더에서 이름이 h로 시작하는 디렉터리 찾기

예 find / -type f -name 'sshd' : 루트폴더에서 이름이 sshd인 파일 찾기

 

cat

  • cat [파일경로] : 해당 경로의 파일을 읽고 출력한다

옵션

  • -n : 줄마다 번호를 매겨서 출력이 됨
  • 명령어 구문 이후 | more 와 함께 사용하면 출력 정도를 제어할 수 있어, 확인하기 좋음(해당 명령어만의 옵션 아님)

예제 ) cat /tmp/services | grep -n dhcp /tmp/services    grep은(Global Regular Expression Print)

 

which

  • which [이름] : 해당 파일이나 폴더의 경로를 표시 

예제) which pwd   : pwd 명령어에 대한 파일 위치 표시

 

whereis

  • whereis [이름] : 해당 파일이나 디렉터리와 관련된 모든 파일 폴더를 표시

 

man(manual)

  • man [명령] : 해당 명령에 대한 메뉴얼 확인 가능

 

mv(move)

  • mv [이동시킬파일또는디렉터리] [이동할디렉터리]
  • mv [파일명] [다른파일명] 방법으로 사용시 파일 이름을 수정할 수도 있음
  • 기본적으로 이동시 같은파일명 있으면 overwrite됨  -i 옵션을 통해 overwrite 여부 확인가능

 

ln(link)

  • ln [원본파일] [링크파일이름] : 하드링크된 파일 생성
  • ln -s [원본파일] [링크파일이름] : 소프트링크된 파일 생성
  • ls -lF를 사용해서 숫자 부분을 보면 하드링크 여부와 소프트링크 여부를 볼 수 있음

1은 소프트링크, 화살표 표시도 친절하게 나옴. 2는 하드링크.  ls -i를 적용하면 i-node 확인 가능

하드링크는 같고, 소프트링크는 I-node가 다름

 

gedit

  • gedit [파일명] : 메모장 파일을 생성

 

 

 

반응형