강좌 / 팁

기 타 rm 명령어로 삭제한 파일/폴더 복구하기

2011.12.19 12:47

gooddew 조회:7900

 

 


rm 으로 지운 파일이나 파일 시스템을 다시 살리기 위한 프로그램은 여러가지 있지만

그 중에서 개개의 파일들을 가장 간편하게 복구할 수 있는 프로그램으로 unrm이 있다.

 

다운로드

직접받기 https://freshmeat.net/redir/unrm/10963/url_tgz/unrm-0.92.tar.gz

와우에서 받기

 

설치

파일이 스크립트로 되어 있어서 파일을 풀고 바로 사용이 가능하다.

# tar xvzf unrm-0.92.tar.gz
 

 

설정

특별한 설정은 필요 없지만 시스템에 따라 mount 명령어의 위치가 다를 수 있으므로,
다음과 같이 압축이 풀린 디렉토리의 unrm 파일의  MOUNT 설정 부분을 고쳐 준다. (mount의 위치를 먼저 알아본 후에 설정해 주면 된다.)

변경 전 : MOUNT='/sbin/mount'

변경 후 : MOUNT='/bin/mount'

 

 

사용전 알아야 할 점

이 프로그램은 root 권한으로 작업하는 것이므로 상당한 주의를 요한다.
그러므로, 지적해 주는 주의사항들을 꼭 지켜야 한다. 그렇지 않다면 시스템을 다시 설치해야 할 지도 모른다.

1. 프로그램 사용 전에 하드디스크에 데이터를 쓰는 모든 프로세스를 종료한다.

- syslog, sendmail 등의 모든 프로세스를 죽인다.

2. / 파티션이 아니라면 복구 파티션을 읽기 전용으로 다시 마운트한 후에 프로그램을 작동한다.

3. 가능하다면 해당 프로그램은 복구 대비용 파티션을 만들어서 이곳에서 실행하도록 한다.

- 이에 대해서는 아래에 설명한다.

4. 복구 대비용 파티션에서의 작업이 아니라면 되도록이면 프로그램 사용을 자제한다.

 

사용

그냥 명령만 내리면 간략한 설명이 나온다.  u 옵션은 특정 파일 소유권자의 파일만 복구하는 것이고, s 옵션은 파일 안에 특정한 문자열이 있는 것만 복구하도록 하는 것이다.

# ./unrm      

unrm v0.92

Usage: unrm [partition] [-u file_owner] [-s string]

Options

 -u <the owner of the erased file>

 -s <a string that may have occured in your file>
 

더 자세한 사항은 FAQ 를 참고하면 된다.

 

복구를 시작하기 전에 우선 모든 불필요하고 위험한 프로세스를 없애기 위해서 다음과 같이 레벨 1 로 전환한다.

# init 1
 

이런 후에 불필요한 프로세스가 남아 있는지 다음 명령으로 확인하고, 시스템의 운영과 무관한(즉, 부팅한 후에 실행한 - 예, rp-pppoe) 프로세스를 죽인다.

# ps -aux
 

그리고, 복구할 파티션을 읽기 전용으로 다시 마운트 한다.

# mount  -t  ext2  -o  ro,remount  /dev/[복구 파티션]  [복구 파티션의 마운트 포인트]
 

이제 프로그램 디렉토리로 이동하여 다음과 같이 명령을 내려서 복구하면 된다.

# ./unrm /dev/hdb4 

unrm v0.92

Looking for debugfs...found!

Checking device /dev/hdb4...ok!

Searching for lost data...done!

Removing previous data...done!

Dumping data into files...done!

Recovery completed!
 

그러면 프로그램의 하부 디랙토리인 unrm.recovered/ 아래에 파일들이 복원된다.

90% 이상이 복원이 되며 주의할 것은 삭제 후 다른 작업을 하지 말고 아는 즉시 바로 복원 작업을 하라는 것이다. 이것은 inode를 찾아서 파일을 복원하는 것이기 때문에 inode의 정보가 변경되면 복구가 불가능하다.

[root@cyberlaw unrm-0.92]# cd unrm.recovered/

[root@cyberlaw unrm.recovered]# ls

unrm.105  unrm.111  unrm.161  unrm.168  unrm.174  unrm.179    unrm.77

unrm.106  unrm.115  unrm.162  unrm.169  unrm.175  unrm.181    unrm.99

unrm.107  unrm.116  unrm.164  unrm.170  unrm.176  unrm.182

unrm.109  unrm.117  unrm.166  unrm.171  unrm.177  unrm.183

unrm.110  unrm.123  unrm.167  unrm.173  unrm.178  unrm.44698
 

복원된 파일들은 각각의 확장자로 inode 번호가 붙는다.

그러므로, 추측에 의해 찾는 파일을 알아볼 수 밖에 없다.

필자가 복원한 파일들은 확인이 가능한 이름으로 바꾸고 확인해 보면 된다. 이것은 이미지

파일들이므로 이미지 파일 이름으로 확장자를 바꾸어 주면 이미지 뷰어로 볼 수 있다.

[root@cyberlaw unrm.recovered]# mv unrm.105 unrm.105.jpg

[root@cyberlaw unrm.recovered]# mv unrm.106 unrm.106.jpg

[root@cyberlaw unrm.recovered]# mv unrm.107 unrm.107.jpg

[root@cyberlaw unrm.recovered]# mv unrm.111 unrm.111.jpg

[root@cyberlaw unrm.recovered]# mv unrm.110 unrm.110.jpg

[root@cyberlaw unrm.recovered]# mv unrm.115 unrm.115.jpg

[root@cyberlaw unrm.recovered]# mv unrm.115 unrm.115.jpg
 

 

 

 

■ 복구용 파티션을 만들었을 때의 사용법

먼저 앞서와 같이 레벨 1으로 런레벨을 바꾼다.

# init 1
 

 

다음과 같이 각각의 파티션을 읽기 전용으로 바꾼다.

# mount  -t ext2 -o  ro,remount  /dev/[/ 파티션]  /

# mount  -t ext2  -o  ro,remount  /dev/[복구 파티션]  [복구 파티션의 마운트 포인트]

# cd  [복구용 파티션 마운트 포인트]/unrm
 

그리고, 명령을 내린다.

 

마치며

지금까지 unrm에 대해서 알아 보았다.

이것과 관련하여 하나의 파티션을 모두 지웠을 때 해당 파티션을 복원할 수 있게 해주는 툴로 다음의 것들이 있다.

■ lde https://freshmeat.net/projects/lde/
■ recover https://recover.sourceforge.net/linux/recover/

참고로 이렇게 복원하는 것을 불가능 하도록 완전히 지워주는 툴로 wipe라는 것이 있다.
보안상 하드디스크 드라이브를 버리거나 타인에게 양도할 때는 이 툴을 쓰도록 한다.

■ wipe https://wipe.sourceforge.net/

 

글쓴이 : 강기봉 님 ( freekgb@hlug.hanyang.ac.kr, freekgb@lvsp.or.kr )
홈페이지 - https://linux4d.net/, https://lvsp.or.kr/
라이센스 - GPL
저작 - 맞춤형 리눅스 내맘대로 배우기 및 다양한 저작 활동

 

 
 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
301 기 타| linux_ansi 코드 사용법 [1] gooddew 5791 0 12-19
300 기 타| linux_FAQ gooddew 5121 0 12-19
299 기 타| linux_ppp gooddew 5144 0 12-19
298 기 타| 리눅스 보안 점검 gooddew 5321 0 12-19
297 기 타| RedHat기반-여러개의 이더넷카드 인식 및 네트웍 인터페이... gooddew 5390 0 12-19
296 기 타| Scanning tool nmap 사용하자 gooddew 6443 0 12-19
295 기 타| 센드메일 가이드 gooddew 5228 0 12-19
294 기 타| squid를 설정하기 gooddew 6518 0 12-19
293 기 타| tcp_wrapper 설정 gooddew 6254 0 12-19
292 기 타| 패킷 헤더(header)를 출력하는 tcpdump gooddew 7370 0 12-19
» 기 타| rm 명령어로 삭제한 파일/폴더 복구하기 [1] gooddew 7900 0 12-19
290 기 타| 네임서버 강좌 ver 0.2 gooddew 5526 0 12-19
289 기 타| 네트워킹 설정 하기 [1] gooddew 5811 0 12-19
288 기 타| 부팅시 X 윈도우로 바로 실행되게 하기 gooddew 6412 0 12-19
287 기 타| 부팅시 출력되는 메시지가 너무 빨리 지나가 볼수가 없때 [2] gooddew 6553 0 12-19
286 기 타| rdate 명령 활용법 gooddew 5767 0 12-19
285 기 타| 서버가 커있는 시간 확인하기 [2] gooddew 6314 0 12-19
284 기 타| 리눅스 특수화일명 삭제방법 [3] gooddew 6322 0 12-19
283 기 타| 윈도우용 압축파일 zip 을 리눅스에서 풀기 gooddew 8316 0 12-19
XE1.11.6 Layout1.4.8