실수로 지운 파일 복구하기

한순간 실수로 홈디렉토리를 모두 지워버렸습니다.
이것저것 복구를 시도해서 그럭저럭 일부의 파일은 복구했네요.
저도 잊어버리기 전에 정리해둘겸 팁으로 남겨봅니다.

라이브 시디와 extundelete (http://extundelete.sourceforge.net/)라는 툴을 이용해서
지워진 파일을 복구하는 방법을 정리해 보겠습니다.
검색해서 나오는 것들은 예전 ext3에서의 복구라서
최신 우분투의 ext4의 복구에는 사용못하고,
제작자의 말에 의하면 이 툴이 최초이고 유일하다네요.
(제가 찾아봐도 그런것 같네요…)

준비물:

  • 라이브시디 - 부팅후 네트워크 접속까지
  • 복구한 파일을 보관할 장소
  • usb 하드디스크
  • 내장된 두번째 하드디스크
  • 다른 컴퓨터 <- 우분투를 가정하고 이 경우만 적어보겠습니다.
  • 시간 (용량에 따라 몇시간에서 몇십시간)

[b:2s29jabc]A. extundelete 설치[/b:2s29jabc]

(1) 실수로 지워진 중요한 자료(rm -rf 등등)가 있다고 판단하면
미련없이 전원을 강제종료하세요.
아니면 최소 하드디스크 언마운트라도 하시길 (sudo umount /dev/sda1)

(2) 라이브 시디(10.04 혹은 10.10)로 부팅합니다.

(3) synaptic package manager를 열고, setting - repository에서 모든 저장소의 체크박스를 체크합니다.
reload를 눌러서 업데이트해 주세요.

(4) sudo apt-get build-dep ext3grep
#extundelete를 컴파일하기 위한 패키지들을 설치합니다.
#저는 귀찮…아서 그냥 이렇게 했습니다. 꽁수이니 잘 아시는 분들은 의존패키지를 직접 설치하시길…

(5) extundelete를 받으세요.

https://sourceforge.net/project/platfor ... _id=260221

압축풀고 컴파일합니다.

[quote:2s29jabc]
tar xvjf extundelete-0.2.0.tar.bz2
cd extundelete-0.2.0
./configure; make
[/quote:2s29jabc]
이상 없으면 sudo make install까지…

[b:2s29jabc]B. 백업할 장소 확보[/b:2s29jabc]

적은 파일을 복구하신다면 usb memory로 충분하실듯…
연결하면 /media/에 마운트되니 cd /media/xxx/ 하신 후
sudo touch asdf; sudo rm asdf로 확인 후 되면 바로 C로 점프!!

저는 다른 우분투가 한대 있어서 네트워크로 백업했습니다.

  • samba로 연결 : 간편할지 모르나 퍼포먼스가 너무 떨어집니다. 작업시간이 너무 길어짐…
  • sshfs로 연결 : 일반유저로 연결하면 root로 파일을 쓸 수가 없더군요.

[quote:2s29jabc]백업용 서버쪽 :
sudo apt-get install openssh-server
sudo -i
passwd 후 패스워드 지정

라이브시디쪽 :
sudo apt-get install sshfs
sudo adduser root fuse
sshfs root@remote.server:confused: /mnt/
sudo -i
cd /mnt/[/quote:2s29jabc]
이렇게 하면 되나, root의 ssh를 여는게 좀 그렇네요.

  • nfs로 연결 : 간단하고 퍼포먼스가 제일 좋습니다.

[quote:2s29jabc]백업용 서버쪽 :
sudo apt-get install nfs-kernel-server
sudo mkdir -p /exports/username
sudo mount --bind /home/username /exports/username
ls /exports/username로 확인

sudo vi /etc/exports
에 다음을 추가
/exports 192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/exports/username 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)
주소는 적당히 바꿔주세요.
sudo service nfs-kernel-server restart

라이브시디쪽 :
sudo apt-get install nfs-client
sudo modprobe nfs
sudo mount -t nfs4 -o proto=tcp,port=2049 192.168.1.10:/ /mnt/
서버쪽 아이피로 수정하세요.
cd /mnt/username/
mkdir backup
chmod -R a+w backup
cd backup후
sudo touch asdf; sudo rm asdf로 확인…
[/quote:2s29jabc]
이상 없으면 준비 완료…

[b:2s29jabc]C. 복구 시작[/b:2s29jabc]

준비된 장소에서 다음 명령을 실행하면
RECOVERED_FILES라는 디렉토리가 생성되고 살릴 수 있는 파일을 살립니다.

[quote:2s29jabc]sudo extundelete /dev/sda1 --restore-all[/quote:2s29jabc]

/dev/sda1도 환경에 따라 수정하세요.
하드의 크기에 따라 몇십시간 걸릴 수 있습니다.

특정 파일이나 디렉토리만 살릴 수도 있습니다.

[quote:2s29jabc]sudo extundelete /dev/sda1 --restore-directory=/home/user/[/quote:2s29jabc]

자세한 사용법은 http://extundelete.sourceforge.net/

이상입니다.
무사히 복구하시길…

그렇다면!
이 팁은 최초이자 유일한 팁인 것인가요!! ㅎㅎ

오~ 필요한 팁이었습니다.
사람이 하는 일이다 보니 언제 그런 실수를 할지 알 수 없죠.

TestDisk & PhotoRec 이 생각나네요.
저번에 파티션에 문제 생겼을 때 당황해서 이걸 써 먹지를 못했습니다.
침착해야 하는데…그게 잘 안되더라구요. :roll:

감사합니다. 리눅스 초짜가 생각없이 무언가를 따라하다가
홈을 몽땅 날려먹어서 ㅠㅠ 였는데…
데이터복구 프로그램 돌려도 안되던데… 덕분에 지금은 ^^ 입니다.
터미널에서 열씨미 복구하고 있는 모습이 기쁩니다.
리눅스 쓰면서 첨으로 컴파일이란걸 해봤네요.
감사합니다. 꾸벅~!

e2undel이라는 프로그램도 있습니다.

그리고, foremost라는 프로그램도 있습니다.

그러나 역시 실수를 하지 않도록 지우기 명령에 각별히 신경을 쓰거나,
백업을 이용하는 방법이 좋다고 볼 수 있습니다.

http://packages.ubunut.com/en/oneiric/utils/extundelete

아예 부팅도 힘들어진 상황에는 라이브CD 기반의 Parted Magic…아시죠?

파티션들(+아직 백업 안한 10~12월에 찍은 사진 ㅠㅠ)을 통째로 날리고 당황해서 허둥대다가

뒤늦게야 저거 생각이 나서 저걸로 복구했는데…

이미 늦어버려서 이미 있는 사진만 잔뜩 복구되어버렸네요 ㅠㅠ

침착이 중요하다는 걸 새삼 느꼈습니다 ㅠ

rm -drf같은 명령어로 지운게 아니라
원인 불명으로 파일이 없어졌던가,
파일 시스템의 문제로 파일을 복구하는 경우라도 충분히 어느 정도 결과를 기대할 수 있다고 생각합니다.

문제는 없어진 이후에도 계속 하드디스크를 사용하다가 복구를 시도하는 경우이지 않을까 합니다.
ColdChamois님이 지적하신 것처럼 뒤늦게 시도하는 경우는 별다른 결과를 기대할 수 없으니
없어진 파일이 있다면 즉시 시도해 보시길…

extundelete가 좋긴 좋네요.

백업시스템을 새로 구축하던 중에 원본 정리를 하고 하면 좋을 것 같아서 원본을 정리하던 중에 실수로 엉뚱한 데이타를 지워버렸습니다.

업무에 바로 영향을 주는 데이타는 아니여서, 그냥 넘어갈까 하다가…이번기회에 한번 '복구’해보면 좋을 것 같다 싶어서 시도해봤는데, 딱 복구되어 나오네요.

다만, 데이타가 euc-kr이여서 로케일때문에 조금 번거로웠습니다.

참고로…우분투에서는 '시넵틱 패키지 관리자’를 설치하신후 그곳에서 검색하시면 extundelete가 나옵니다. 그걸 설치하시면 컴파일 없이도 사용이 가능합니다.