바닥코딩

리눅스 명령어 - 파일 시스템 본문

네트워크 & 리눅스/리눅스

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

개발공부개발공부 2024. 4. 1. 09:48

이번 포스트에서는 파일 시스템 관리를 위한 명령어에 대해 다루어 보겠습니다.

 

cd

  지정한 디렉토리로 이동합니다.

 옵션 

. 현재 위치로 이동
.. 부모 디렉토리 이동
~ 홈 디렉토리 이동
- 이전 디렉토리 이동

 

 

cp

  파일 및 디렉토리극 복사합니다.

 옵션 

-f 같은 이름의 파일이 있으면 확인하지 않고 덮어쓰기
-i 같은 이름의 파일이 있으면 확인하고 덮어쓰기
-R 디렉토리 하위 파일 모두 복사

 

 

dd

  블록 단위로 데이터를 복사하거나 변환

 옵션 

if 입력 파일을 지정
of 출력 파일을 지정
bs 블록 크기를 지정
count 복사할 블록의 수를 지정
seek 출력 파일의 시작 위치를 지정
skip 입력 파일의 시작 위치를 지정
status 진행 상황을 출력할지 여부를 지정

 

 

df

  파일시스템의 디스크 사용량을 표시

 옵션 

-a 모든 파일시스템을 표시
-h 사람이 읽을 수 있는 형태로 용량을 변환하여 표시
-T 파일시스템의 타입을 표시
df -T

-T 옵션을 주면 파일 시스템의 타입을 함께 조회할 수 있습니다.  해당 명령어를 통해 파일 시스템의 Type또한 같이 조회 할 수 있는데 각 파일 시스템의 타입에 대한 내용은 아래와 같습니다.

 파일 시스템의 종류

xfs xfs는 크기 변경이 자유롭고, 고성능의 파일 시스템이며 16엑사바이트까지 지원한다. 파일당 8엑사바이트를 지원하고, 디렉토리당 수천만 개의 파일을 포함할 수 있다. 메타데이터 저널링을 지원하고 빠른 복구를 제공하며 xfs 파일 시스템은 마운트 중에도 단편화, 크기 변경이 가능하다. 기본적으로 선택을 추천한다. 파티션 최대 지원크기는 500TB
ext4 ext4 파일 시스템은 ext3 파일 시스템에 기초하여 여러사항이 개선되었다. 이러한 개선사항에는 대용량 파일 시스템 및 대용량 파일 지원, 디스크 공간의 빠르고 효과적인 할당, 디렉토리에 있는 하위 디렉토리 수 제한 없으며 빠른 파일 시스템 확인 및 보다 강력한 저널링 기능이 포함된다.
ext3 ext3 파일시스템은 ext2 파일 시스템을 기반으로 하지만, 한가지 장점을 가지고 있습니다 – 저널링입니다. 저널링 파일시스템을 사용하면, 파일 시스템이 충돌한 다음에 파일시스템 복구를 위해 소요되는 시간이 적게 걸립니다. 이는 충돌이 발생할 때 마다 fsck 유틸리티를 실행하여 파일 시스템이 메타데이터의 일관성을 검사할 필요가 없기 때문입니다.
ext2 ext2 파일 시스템은 일반 파일, 디렉토리, 심볼릭 링크 등을 포함하여 표준 Unix 파일 유형을 지원합니다. 이 파일 시스템은 255 자까지 허용하는 긴 파일 이름을 부여할 수 있는 기능을 제공합니다.
vfat VFAT 파일 시스템은 Linux 파일 시스템으로서 FAT 파일 시스템 상의 Microsoft Windows 긴 파일명과 호환 가능합니다.
swap 스왑 파티션은 가상 메모리를 지원하는데 사용됩니다. 즉, 시스템이 처리하는 데이터를 저장할 RAM이 충분하지 않을 때 스왑 파티션에 데이터가 기록됩니다.
BIOS 부트 BIOS 시스템에서 GPT (GUID partition table)로 장치를 부팅하는데 필요한 작은 파티션입니다.
EFI 시스템 파티션 UEFI 시스템에서 GPT (GUID partition table)로 장치를 부팅하는데 필요한 작은 파티션입니다.

 

 

du

파일과 디렉토리의 사용량을 표시

 옵션 

-b 바이트 단위로 표시
-k 킬로바이트(KB) 단위로 표시 
-m 메가바이트(MB) 단위로 표시
-s 디스크 사용량의 합계를 표시
-h 사람이 보기 편한 형태로 표시

 

find

파일을 검색할 때 사용합니다.

 옵션 

-name 검색할 이름을 지정  [*] 사용가능
-exec 찾은 파일을 이용해서 다른 명령을 실행해야 할 때 사용
-mtime 수정시간을 이용하여 검색
-type 찾는 파일의 타입을 지정

 type 옵션

b 블록형 특수 파일
c 캐릭터형 특수 파일
d 디렉토리
f 일반 파일
l 심볼릭 링크
p 파이프
s 소켓

find를 사용하는 예제는 아래와 같습니다.

# txt로 끝나는 파일 검색 
find ./ -name "*.txt"

# logs 폴더 아래에서 txt로 끝나는 파일 검색 
find ./logs -name "*.txt"

# 현재 폴더에서 com으로 시작하는 파일(f)만 검색 
find ./ -name "com*" -type f

# logs 폴더 아래에서 log로 끝나는 파일을 찾이서 log.tar.gz 으로 압축 
find ./logs -name "*.log" -exec tar -czf "./logs/log.tar.gz" {} \;


# 현재 폴더 아래 jar 파일을 target_dir 디렉토리로 복사 
find ./ -name "*.jar" -exec cp {} ./target_dir/ \;


# logs 폴더 아래에서 20190101이 있는 파일을 찾아서 삭제(rm) 
find ./logs/ -name "*20190101*" -exec rm -rf {} \;

# logs 폴더 아래에서 20190101이 있는 파일을 찾아서 삭제하는데, tar.gz 으로 끝나는 파일은 제외 
find ./logs/ -name "*20190101*" -not -name "*.tar.gz" -exec rm -rf {} \;

# logs 폴더 아래에서 log로 끝나는 파일이면서, 일주일동안 수정이 없던 파일을 삭제 
find ./logs/ -name "*.log" -mtime +6 -delete

 

hdparm

디스크를 읽는 속도를 측정하거나, 디스크 옵션을 확인할 떄 사용

 옵션 

-t 버퍼 없이 읽기 속도 측정
-T 버퍼를 이용한 읽기 속도 측정

 

 

ln

파일, 디렉토리에 대한 링크를 생성할 때 사용하며 -s 옵션을 이용하면 심볼링 링크를 생성하고, 사용하지 않으면 하드링크를 생성합니다.

심볼링 링크는 윈도우의 바로가기로 생각할 수 있습니다. 윈도우의 바로가기 처럼 원본파일을 삭제하면 심볼링 링크는 동작하지 않습니다.

반면 하드링크는 같은 파일을 하나더 생성하는거와 같이 연결 되어 있습니다 원본을 수정하면 파일도 함께 수정됩니다.

 

 

ls

파일 엔트리 정보를 표시합니다.

 옵션 

-a 경로안에 모든 파일 나열(숨김파일 포함)
-l 파일 나열시 자세히 출력
-R 위치한 디렉토리 하부 디렉토리 파일까지 출력
-h 파일크기를 해석하기 편하게 출력
-r 출력 결과를 내림차순으로 정렬
-t 출력 결과를 파일이 수정된 시간을 기준으로 정렬

 

 

lsof

lsof(list open files)의 약자로 열려있는 모든 파일을 확인합니다.

 옵션 

i ip확인
n 호스트 이름 확인
P 포트 이름 확인

 

 

mkdir

디렉토리를 생성합니다.

 옵션 

-p 지정된 경로가 존재하지 않으면 모두 생성
# par1 디렉토리를 생성하고, 하위에 dir1을 생성합니다. 
$ mkdir -p par1/dir1

 

mkfs

하드디스크를 포맷할 때 사용합니다.

 옵션 

-t 타입을 지정 

 

# /dev/vda를 ext4 형식으로 포맷합니다. 
$ mkfs -t ext4 /dev/vda

# /dev/vdb를 xfs 형식으로 포맷합니다. 
$ mkfs -t xfs /dev/vdb

 

mv

파일 디렉토리를 이동할 때 사용하며, 이름을 변경하는데도 사용됩니다.

 옵션 

-f 같은 이름의 파일이 있으면 확인하지 않고 덮어씀
-i 같은 이름의 파일이 있으면 확인하고 덮어

 

 

rm

파일, 디렉토리를 삭제합니다

 옵션 

-f 파일이 없는 경우에도 오류를 표시하지 않습니다(강제 삭제)
-r 디렉토리를 삭제합니다.