[RHEL6] 파일 시스템 명령어 1탄(chroot, dd, debugfs, df, dosfsck)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 파일 시스템 명령어 1탄(chroot, dd, debugfs, df, dosfsck)

by 찬찬이 아빠 2020. 4. 3.
반응형
  1. chroot(가상 루트 디렉터리)

 1) 경로 : /usr/sbin/chroot

 2) 요약 : 가상의 루트 디렉터리를 생성

 3) 사용 방법 : chroot [새로운 루트 경로] [명령어]

                   chroot [옵션]

 4) 옵션

 --help : 도움말 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

chroot는 가상의 root를 만드는 명령어입니다. 가상으로 설정할 루트 경로에 시스템 운영에 필요한 라이브러리와 실행 파일을 복사해 놓고 chroot [새로운 루트 경로] 명령을 내리면 가상 root 시스템으로 들어가게 됩니다. 시스템 '/' 아래의 구조가 같고, 환경이 구성되어 있으면, 그 위에서 프로그램을 동작시킬 수 있습니다. 실행되는 프로그램들을 통해서 기반 시스템의 쉘에 접근하지 못하기 때문에 보안상 유리합니다. 또한 chroot [새로운 루트 경로] [명령어]로 지정한 명령어를 새로운 루트 경로상에서 실행 할 수 있습니다.

 

현재는 가상화 기술의 발달로 뛰어난 기술의 다양한 가상 머신이 더 나은 보안성과 편리성을 주어 chroot의 활용도는 계속 떨어지고 있습니다.

 

 

 

  2. dd(블록 단위의 복사)

 1) 경로 : /bin/dd

 2) 요약 : 블록 단위의 파일 변환 및 복사

 3) 사용 방법 : dd [옵션]

 4) 옵션

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 of=file : 표준 출력 대신 지정한 파일에 작성

 if=file : 표준 입려 대신 지정한 파일에서 불러들임

 ibs=size ; 지정한 크기(size) 만큼 읽음

 obs=size : 지정한 크기(size) 만큼 씀

 bs=size : 지정한 크기(size) 만큼 읽고 씀(ibs, obs 값은 무시)

 count=n : 입력 블록의 ibs 크기 만큼 복사

 conv=ascii : EBCDIC 코드를 ASCII 코드로 변환

 conv=ebcdic : ASCII 코드를 EBCDIC 코드로 변환

 conv=ibm : ASCII 코드를 EBCDIC 코드로 변환

 conv=swab : 입력되는 두 바이트의 순서를 바꿈. 입력 파일에서 짝이 맞지 않는 하나의 바이트가 남으면 마지막 바이트는 그냥 단순히 복사됨 

 

 5) 추가 설명

dd는 부트 플로피나 스왑 파일을 만드는 작업에 유용한 명령어로, 변환 과정을 거쳐 파일 또는 표준 입력을 복사합니다. ASCII-EBCDIC 간 변환, 대소무낮 간 변환, 입출력 바이트 상 바꾸기, 입력 파일의 처음이나 끝을 건너 뛰거나 잘라내서 출력 파일을 만드는 등의 다양한 변환을 할 수 있습니다. 또한 백업처럼 대량 데이터를 복사할 때도 사용합니다. 아래와 같이 dd는 파일 내용을 장치에 그대로 쓰는 특징이 있습니다.

 

<1.44 인치 부트 플로피 만들기>

kernel-image는 /boot 디렉터리에 있는 커널이미지 이름을 지정합니다.

# pwd
/boot

# dd if=kernel-image of=/dev/fd0 bs=1440

 

<512MB 스왑 파일 만들기>

# dd if=/dev/zero of=/swap bs=1024 count=524288
# mkswap /swap 524288
# sync
# swapon /swap

 

<USB 메모리에 부팅 이미지 파일 쓰기>

아래와 같이 다운로드한 부팅 이미지를 USB 메모리에 쓸 수 있습니다. /dev/sdb는 USB 메모리의 장치명입니다.

# dd if=meego-netbook-ia32-1.0.0.20100524.1.img of=/dev/sdb

 

 

 

  3. debugfs(파일 시스템 디버거)

 1) 경로 : /sbin/debugfs

 2) 요약 : ext2/ext3/ext4 파일 시스템을 디버깅

 3) 사용 방법 : debugfs [[-옵션] 장치명]

 4) 옵션

 -w : 읽기/쓰기 모드로 파일시스템 열기

 

 5) 추가 설명

debugfs는 ext2, ext3, ext4 파일 시스템을 직접 확인하고 제어하는 상호 대화형 디버거입니다.

 

debugfs 명령어를 실행 후 나오는 debugfs: 쉘에서 다음 명령어를 사용할 수 있습니다.

명령어 설명
cat 파일명 inode 하나의 내용을 표준 출력으로 덤프
cd 디렉터리 작업 디렉터리를 변경
chroot 디레터리 지정한 inode로 루트 디렉터리를 변환
close 열린 파일 시스템을 닫음
clri 파일명 파일에 해당하는 아이노드의 내용을 지움
dump 파일명 출력 파일명 inode의 내용을 파일로 덤프
expand_dir 파일명 디렉터리를 확장
find_free_block [목표] 목표로부터 시작해서 첫 번째 빈 블록을 찾아 할당
find_free_inode [디렉터리[모드]] 빈 아이노드를 찾아서 할당
freeb 블록 블록을 할당하지 않은 것으로 표시
freei 파일명 파일명에 해당하는 아이노드를 해제
help 사용할 수 있는 명렁어 목록을 출력
check 블록 블록을 아이노드로 변환하여 수행
iname inode 아이노드에 해당하는 파일명을 출력
initialize 장치명 블록크기 장치명에 ext2 파일 시스템을 생성
kill_file 파일명 파일을 삭제하고, 사용한 블록을 해제
lnn 원본파일 목표파일 링크를 만듦
ls [경로명] ls 명령어를 에뮬레이트함
modify_inode 파일명 파일명에 해당하는 아이노드의 내용을 수정
mkdir 디렉터리 지정한 디렉터리명으로 디렉터리를 생성
mknod 파일명 [p|[[c|b] 메이저번호 마이너번호]] 특별한 장치 파일을 지정한 메이저 번호와 마이너 번호로 생성
ncheck inode 아이노드에서 이름으로 변환을 수행
open [-w] 장치명 파일 시스템 열기
pw 현재 작업 디렉터리 출력
quit debugfs를 종료
rm 파일명 지정한 파일 삭제
rmdir 디렉터리 지정한 디렉터리 삭제
setb 블록 지정한 블록을 할당한 것으로 표시
seti 파일명 파일명에 해당하는 아이노드를 사용하는 것으로 표시
show_super_stats 슈퍼 블록의 목록을 출력
stat 파일명 지정한 파일명으로 아이노드의 목록을 덤프
testb 블록 블록이 할당되어 잇는지 테스트
unlink 파일 지정한 파일의 링크를 제거
write 원본파일 대상파일 파일명을 갖는 파일 시스템에 파일 하나를 만들고 나서 원본 파일의 내용을 대상 파일에 복사

 

<debugfs 명령으로 방금 삭제된 파일 복구하기>

1. 삭제할 디렉터리로 이동
# cd /hdc1/mp3-data

2. 삭제할 파일 확인
# ls
abc.mp3	def.mp3	ghi.mp3

3. abc.mp3 파일 삭제
#rm -rf abc.mp3

4. 삭제한 파일이 잇는 파티션에서 debugfs명령어로 디버깅 실행
# debugfs /dev/hdc1
Inode		Owner		Mode		Size		Block			Time deleted
1 deleted inodes found.
649121		500			100644		3125376		765/765			Fri Apr 3 14:50:33 2020

5. lsdel 명령어로 삭제된 파일 확인
649121의 아이노드 값을 가진 파일이 2020년 4월 3일 14시 50분쯤 삭제된 것을 알 수 있음
debugfs: lsdel
Inode		Owner		Mode		Size		Block			Time deleted
1 deleted inodes found.
649121		500			100644		3125376		765/765			Fri Apr 3 14

6. dump 명령으로 649121 파일을 다른 파일시스템으로 복구
debugfs: dump<649121>/root/recovery.dump

7. 디버그 종료
debugfs: quit

8. 이전에 삭제된 파일인 abc.mp3 파일이 recovery.dump 파일로 복구됨
# ls -al /root/recovery.dump
-rw-r--r--	1	root	root	3125376	Fri Apr 3 14:55:10 2020	/root/recovery.dump

 

 

  4. df(남은 용량 보기)

 1) 경로 : /bin/df

 2) 요약 : 파일 시스템 디스크 공간의 사용량을 출력

 3) 사용 방법 : df [옵션] [파일명...]

 4) 옵션

 -a, --all : 0 블록의 파일 시스템을 포함하여, 모든 파일 시스템을 출력

 -B, --block-size=SIZE : 지정한 크기(SIZE)를 블록 단위로 정하여 용량을 표시(--block-size=1m)

 --total : 총계를 출력

 -h, --human-readable : 사람이 읽을 수 있는 형태의 크기로 출력(1K, 234M, 2G)

 -H, --si : 1KB는 1,024 바이트이지만 사용자가 보기 편하도록 1,000 단위로 용량을 표시

 -i, --inodes : 아이노드의 남은 공간, 사용 공간, 사용율 정보를 출력

 -l(엘), --local : 출력하는 목록을 로컬 파일 시스템으로 제한

 --no-sync : 사용 정보를 얻기 전에 싱크를 하지 않음(기본값)

 -P, --protability : POSIX에서 사용되는 형태로 출력

 --sync : 사용 정보를 얻기 전에 싱크

 -t, --type=TYPE : 보여 주는 목록을 파일 시스템의 타입(TYPE)으로 제한

 -T, --print-type : 파일 시스템의 형태를 추가하여 각각의 퍼미션 정보를 출력

 -x, --exclude-type=TYPE : 지정한 형태(TYPE)를 제외하고, 나머지 모든 파일 시스템 정보를 출력

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

df 명령어는 시스템에 마운트되어 있는 파일 시스템의 사용 정보를 출력하는 명려어로 1,024 바이트의 블록 단위로 출력합니다.

# df
파일시스템	1K-블럭		사용됨		사용가능		사용%		마운트됨
/dev/sba1	19737268	3835608		14899064	21%		/
none		508976		248		508728		1%		/dev
none		513196		1128		512068		1%		/dev/shm
none		513196		104		513092		1%		/var/run
none		513196		0		513196		0%		/var/lock
none		513196		0		513196		0%		/lib/init/rw

 

아래와 같이 -i 옵션으로 아이노드의 사용 정보를 확인할 수 있습니다.

참고로 하드 디스크의 사용 공간이 남아 있더라도 아이노드가 부족하면 더 이상의 파일을 생성할 수 없습니다. 때문에 -i 옵션으로 아이노드의 정보를 살펴볼 필요가 있습니다.

# df -i
파일시스템	I노드		I사용됨		I미사용		I사용율%		마운트됨
/dev/sba1	1253376		206124		1047252		17%		/
none		127244		666		126578		1%		/dev
none		128299		6		128293		1%		/dev/shm
none		128299		62		128237		1%		/var/run
none		128299		1		128298		1%		/var/lock
none		128299		1		128298		1%		/lib/init/rw

 

아래와 같이 -h 옵션은 사람이 읽기 쉬운 단위(1K, 234M, 2G)로 파일 시스템의 용량을 확인할 수 있습니다.

# df -h
파일시스템	크기		사용됨		사용가능		사용%		마운트됨
/dev/sba1	19G		3.7G		15G		21%		/
none		498M		248K		497M		1%		/dev
none		502M		1.2M		501M		1%		/dev/shm
none		502M		104K		502M		1%		/var/run
none		502M		0		502M		0%		/var/lock
none		502M		0		502M		0%		/lib/init/rw

 

 

  5. dosfsck(MS_DOS 파일 시스템 복구)

 1) 경로 : /sbin/dosfsck

 2) 요약 : MS-DOS 파일 시스템을 체크하고 복구

 3) 사용 방법 : dosfsck [옵션...] 장치명

 4) 옵션

 -a : 파일 시스템을 자동적으로 복구

 -d : 파일 할당 테이블에서 지정한 파일을 삭제

 -f : 손실된 체인을 파일로 복구

 -l(엘) : 패스 이름을 출력

 -r : 파일 시스템 복구 시 일일이 물어봄

 -t : 테스트로 진행

 -u file : 지정한 파일을 삭제하지 않음

 -v : 상세한 정보를 출력

 -V : 확인 절차를 생략

 -w : 변경된 내용을 즉시 디스크에 씀

 -y : -a 옵션과 동일

 

 5) 추가 설명

dosfsck는 시스템 관리 명령어로 fsck 명령과 유사하지만, MS-DOS의 파일 시스템에만 적용할 수 있습니다. 리눅스는 MS-DOS, Sun 솔라리스 등의 다양한 환경에서의 파일 시스템을 읽고 쓰거나, 또는 읽기 전용으로 지원합니다 .이것은 후발 운영체제로서 다양한 운영체제의 파일 시스템을 지원하여 사용자의 불편을 최소화하자는 뜻입니다. 그러나 파일 시스템을 검사하고 복구하는 것은 각 고유의 파일 시스템 별로 특징이 있기 때문에 서로 다른 명령이 필요합니다. 리눅스에서는 자주 사용하는 타 운영체제의 파일 시스템을 검사하고 복구하는 명령도 발견할 수 있는데 그 중 대표적인 것이 FAT 파일 시스템에 대한 것과 minix 파일 시스템에 대한 것입니다.

 

아래와 같이 시스템에 추가적으로 지원하는 fsck 파일 시스템은 fsck로 시작하는 명령으로 확인할 수 있습니다.

# ls /sbin/fsck*
/sbin/fsck			/sbin/fsck.ext3		/sbin/fsck.minix		/sbin/fsck.vfat
/sbin/fsck.cramfs	/sbin/fsck.ext3		/sbin/fsck.msdos		/sbin/fsck.ext2
/sbin/fsck.ext4dev	/sbin/fsck.nfs
반응형

댓글