마스터포유(Master4U)
Monday, 17 of January
 

제목: 삭제된 파일 복구
분류: 리눅스
이름: 관리자 * http://www.master4u.net


등록일: 2011-08-08 23:20
조회수: 5907
 
삭제된 파일을 복구하기 위한 전제 조건은 삭제하였던 파일이 있었던 하드디스크의 섹터 부분이 다른 파일로 덮어 씌워지기 전에 복구해야 한다는 것입니다.


1. 파일 복구 프로그램 설치

1) tct 다운로드
http://www.porcupine.org/forensics/tct.html

2) 설치

# tar zxvf tct-1.16.tar.gz
# cd tct-1.16
# vi src/fstools/mylseek.c 파일을 열어 #include 추가
# make



2. 파일 복구 테스트

예시:

grub.conf 파일을 /tmp/grub 로 복사후 삭제한 다음 복구가 되는지 테스트해 보았습니다.


1) 삭제후 복구할 테스트 파일(grub.conf)을 /tmp 디렉토리로 복사후 삭제

# cp -a /boot/grub /tmp

# rm /tmp/grub -rf

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda8 289M 8.1M 266M 3% /tmp


2) /tmp 파티션을 unrm 명령으로 덤프를 뜹니다.
unrm - disk data recovery

# ./bin/unrm /dev/hda8 > tmp_dump

# ll -h tmp_dump
-rw-r--r-- 1 root root 281M 1월 16 19:13 tmp_dump


3) lazarus 명령으로 덤프를 뜬 파티션의 파일을 복구합니다.
lazarus =create structure from unstructured data

# ./bin/lazarus -h tmp_dump --> 아래와 같은 파일과 디렉토리 생성

# ll -h
drwx------ 2 root root 106496 1월 16 19:48 blocks
-rw-r--r-- 1 root root 294216704 1월 16 19:13 tmp_dump
-rw-r--r-- 1 root root 203 1월 16 19:14 tmp_dump.frame.html
-rw-r--r-- 1 root root 730609 1월 16 19:48 tmp_dump.html
-rw-r--r-- 1 root root 1472 1월 16 19:14 tmp_dump.menu.html
drwx------ 2 root root 270336 1월 16 19:48 www


4) blocks 디렉토리에서 /boot/grub/grub.conf 파일의 내용과 동일한 파일을 검색합니다. 여기에서는 LABEL이라는 단어로 검색하였습니다.

# grep LABEL ./blocks/*.txt
Binary file ./blocks/7631.t.txt matches

7631.t.txt 라는 파일을 열어보니 /boot/grub/grub.conf 파일 내용과 일치함을 보였습니다. 복구에 성공!!


# cat ./blocks/7631.t.txt

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda7
# initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-46.9.legacy)
root (hd0,0)
kernel /vmlinuz-2.4.20-46.9.legacy ro root=LABEL=/ hdc=ide-scsi
initrd /initrd-2.4.20-46.9.legacy.img
title Red Hat Linux (2.4.29)
root (hd0,0)
kernel /vmlinuz-2.4.29 ro root=/dev/hda7 hdc=ide-scsi
initrd /initrd-2.4.29.img
title Red Hat Linux (2.4.20-37.9.legacy)
root (hd0,0)
kernel /vmlinuz-2.4.20-37.9.legacy ro root=LABEL=/ hdc=ide-scsi
initrd /initrd-2.4.20-37.9.legacy.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ hdc=ide-scsi
initrd /initrd-2.4.20-8.img



3. 참고 문서
http://kltp.kldp.org/stories.php?story=01/11/01/7561951

최종수정일: 2009-11-11

<자료출처 : 후이즈 http://cs.whois.co.kr/faq/?p=list&page=13 >


       
△ 이전글: 시스템 병목현상 체크하기
▽ 다음글: 리눅스 시스템에서 로그파일의 이해 및 설명
Copyright 1999-2020 Zeroboard / skin by enFree