강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

debugfs를 이용한 삭제된 파일복구하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

debugfs를 이용한 삭제된 파일복구하기







 

, 그럼 이제 debugfs를 이용한 삭제된 파일의 복구 방법을 설명하겠습니다.

 

 

 

복구라고 하면 삭제된 파일을 복구한다는 의미이지만 사실은 완적 삭제된 데이터를 복구할 수는 없습니다.

 

 

 

단지, 파일시스템 구조상 block을 대상으로 복원하는 작업이라고 해야 옳을 것입니다.

 

 

 

하지만, 리눅스에서는 이마저도 쉬운 작업이 아닙니다.

 

 

 

파일시스템의 구조상 결코 쉬운작업이 아닐 수 없습니다.

 

 

 

따라서 debugfs에는 삭제된 파일을 복구하는 복구관련 전용명령어가 있습니다.

 

 

 

우리는 debugfs의 복구관련 전용명령어를 이용하여 복구하는 방법에 대해서 알아볼 것입니다.

 

 

 

 

 

우리는 흔히  리눅스 쉘상태에서 실수로 인하여 rm이라는 명령어로 파일을 삭제하곤 합니다.

 

 

 

MS-Windows시스템에서는 삭제된 파일이 거의 대부분 휴지통에 들어가 있기 때문에 (물론, 일정 시간과 조건이 되면 휴지통에서도 삭제되지만) 쉽게 복구할 수 있습니다.

 

 

 

하지만, 리눅스 시스템에서는 삭제된 파일을 복구하기란 여간 힘든일이 아닙니다.

 

 

 

물론, 리눅스를 데스크탑으로 사용한다면 리눅스의 GNOME이나 KDE와 같은 X-Windows시스템이 설치되어 있고 리눅스시스템의 휴지통이 설치되어 있기 때문에 MS-Windows와 같은 삭제된 파일 복구가 가능합니다.

 

 

 

또한 리눅스에는 undelete라는 유틸리티를 이용하면 인위적인 휴지통을 설치하여 삭제된 파일을 복구할 수도 있습니다.

 

 

 

 

 

하지만 이런 방법들은 사실 복구라는 개념보다는 복원이라는 개념이 더 적합합니다.

 

 

 

우리는 이번 절에서 debugfs를 이용하여 직접 파일시스템을 조작하여 삭제된 파일을 복구하는 방법을 배울 것입니다.

 

 

 

지금까지 debugfs의 설명을 잘 이해하셨다면 이번 절에서 설명하는 삭제파일 복구방법은 쉽게 이해할 수 있습니다.

 

 

 

 

 

먼저, debugfs의 전용명령어들 가운데 복구와 관련된 다음 몇가지 전용명령어들을 알아 두셔야합니다.

 

 

 

 

 

복구관련 전용명령어

   

ls -d

ls -ld

삭제된 파일리스트까지 함께 파일리스트를 표시함.

undelete

undel

삭제파일 복구(undelete file)

dump

dump_inode

지정한 inode를 파일로 덤프함.( Dump an inode out to a file)

logdump

저널링파일의 내용을 지정한 파일로 덤프함.( Dump the contents of the journal)

lsdel

list_deleted_inodes

삭제된 inode(파일들)에 대한 리스트를 보여줌

rdump

삭제된 디렉토리 복구

 

그럼 이제 debugfs를 실행한 후에 다음과 같이 “ls -dl”을 실행하였습니다.

 

 

 

우리는 앞에서 ls라는 debugfs전용명령어들을 보았습니다.

 

 

 

이번에는 -d -l옵션이 추가된 ls입니다.

 

 

 

 

-d옵션은 삭제되었던 파일들 까지 리스트해주는 것이고 -l옵션은 보다 상세한 포맷으로 리스트해 주는 것입니다.

 

 

 

 

 

debugfs:  ls -dl

   7313   40700 (2)    502    502    4096  4-Jan-2009 23:32 .

      2   40755 (2)      0      0    4096 21-Dec-2008 22:48 ..

   7314  100644 (1)    502    502     176 29-Oct-2008 06:37 .bash_profile

   7315  100644 (1)    502    502     124 29-Oct-2008 06:37 .bashrc

   7316   40755 (2)    502    502    4096  1-Dec-2008 21:49 .mozilla

   7319  100644 (1)    502    502      18 29-Oct-2008 06:37 .bash_logout

   7320   40755 (2)    502    502    4096 29-Oct-2008 03:49 .gnome2

   7321   40755 (2)      0      0    4096 23-Dec-2008 02:55 www

   7330  100400 (1)      0      0    1710  4-Jan-2009 20:40 shadow_new

<     0>      0 (1)      0      0       0                   securetty

<     0>      0 (1)      0      0       0                   sensors3.conf

<     0>      0 (1)      0      0       0                   services

<     0>      0 (1)      0      0       0                   sestatus.conf

   7330  100400 (1)      0      0    1710  4-Jan-2009 20:40 shadow

<     0>      0 (1)      0      0       0                   shadow-

<     0>      0 (1)      0      0       0                   shells

<     0>      0 (1)      0      0       0                   slrn.rc

<     0>      0 (1)      0      0       0                   smartd.conf

   7335  100644 (1)      0      0     212  4-Jan-2009 20:40 statetab

<     0>      0 (1)      0      0       0                   sudoers

<     0>      0 (1)      0      0       0                   sysctl.conf

<     0>      0 (1)      0      0       0                   system-release

<     0>      0 (1)      0      0       0                   system-release-cpe

 

debugfs:

 

위의 출력결과에서 < >으로 되어 있는 파일들은 모두 inode번호가 0으로서 inode가 할당되어 있지 않은 삭제된 파일들을 표시한 것입니다.

 

 

 

만약 “ls -dl”대신 “ls”또는 “ls -l”을 실행하였다면 삭제된 파일들의 리스트는 보여주지 않습니다.

 

 

 

삭제된 파일리스트를 확인하기 위해서는 반드시 -d옵션을 함께 사용해야합니다.

 

 

 

 

 

그리고 다음 예를 보십시요.

 

debugfs: 

debugfs:  lsdel

 Inode  Owner  Mode    Size      Blocks   Time deleted

  7338      0 100644     30      1/     1 Sun Jan  4 21:51:43 2009

  7336      0 100440   3161      1/     1 Sun Jan  4 21:53:15 2009

2 deleted inodes found.

debugfs:

 

lsdel을 실행하여  삭제된 inode들에 대한 리스트를 확인하고 있습니다.

 

 

 

이제 우리는 위의 2가지 정보를 가지고 파일을 복구할 수 있습니다.

 

 

 

복구방법은 다음과 같습니다.

 

 

 

 

 

undelete 복구할파일명

undel 복구할파일명

logdump -f 저널링파일명 생성파일명

dump_inode [-p] 복구할파일명 생성할파일명

dump [-p] 복구할파일명 생성할파일명

 

위의 몇가지 방법들을 이용하면 파일을 복구할 수 있습니다.

 

 

 

그리고 위의 복구방법에서 undelete undel은 같은 것이며, dump_inode dump는 같은 명령어입니다.

 

 

 

그리고 dump_inode에서 -p옵션을 사용하면 소유자, 소유그룹, 그리고 퍼미션정보등을 지정하여 복구할 수 있습니다.

 

 

 

 

 

한가지 주의할 사항은 ext2파일시스템과ext3파일시스템의 구분입니다.

 

 

 

, 얼마전까지만 하더라도 debugfs ext2전용이었기에 ext3 저널링파일시스템은 복구가 전혀 되지 않았습니다.

 

 

 

지금도 완전한 것은 아니지만 현재는 ext2 ext3에서 모두 복구가 가능합니다.

 

 

 

하지만, 파일시스템의 종류에 따라서 위의 복구방법이 조금씩 다르므로 주의하시기 바랍니다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,811 개
  • 현재 접속자 :  128 명