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
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 파일 시스템 명령어 3탄(fsck, mke2fs, mknod, mkswap, mktemp) (0) | 2020.04.08 |
---|---|
[RHEL6] 파일 시스템 명령어 2탄(du, dumpe2fs, e2fsck, e2lable, fdisk) (0) | 2020.04.03 |
[RHEL6] 파일 찾기 명령어(egrep, find, grep, locate, strings) (0) | 2020.04.02 |
[RHEL6] 파일 조작 명령어 6탄(ul, unexpand, uniq, wc) (0) | 2020.04.02 |
[RHEL6] 파일 조작 명령어 5탄(split, tac, tee, tr) (0) | 2020.04.02 |
댓글