Lifove Story

포맷한 하드디스크에서 삭제된 파일 복구하기 본문

Lifove IT

포맷한 하드디스크에서 삭제된 파일 복구하기

Lifove 2015. 7. 12. 21:45

실수로 자료 보관용 하드디스크(HDD)를 format 해버렸다. 10여일 밖에 남지 않은, 내 박사논문 최종 발표 자료인 pptx파일도 포맷과 함께 사라졌다. 자료복구 프로그램을 검색해보니 전부 십만원 정도의 비용을 지불 해야하는 유료 프로그램들이었다. 무료 다운로드지만, 복구 가능한 파일들을 복구하기 위해서는 반드시 유료 구입해야만 가능한 프로그램들이 많았다. (유료 복구 프로그램 관련해서는 잘 정리된 외부글(http://blog.kdongwon.com/)이 있으니 참고하면 되겠다.) 하지만, 아래 소개하는 프로그램을 익숙하게 사용할 수 있으면, 무료로 많은 파일들을 복구할 수 있다.


무료 복구 프로그램을 찾다가 가뭄의 단비처럼 찾은 프로그램이 PhotoRec였다. 이름에서 알 수 있듯이, 지워진 사진 파일을 복구하는데 탁월한 성능을 발휘하며, Adobe photoshop이나 illustrator 파일 및  pdf, docx, xlsx등 다양한 문서파일 등도 복구해 준다. 복구 가능한 파일의 종류는 다음 페이지를(http://www.cgsecurity.org/)를 참고하면 된다. 복구 지원 안되는 파일 종류의 경우는 파일 서명(Signature) 정보만 있으면 특별 설정을 하여 복구할 수 있다.


PhotoRec는 일반 GUI가 지원되지 않고, 대신 예전에 PC통신 시대의 터미널 방식의 GUI를 지원하기에, 일반 사용자는 사용하기 조금 익숙하지 않을 수도 있다. 하지만, 커서키를 통해 메뉴들을 차근 차근 따라가면, 어려운 점은 없다.


Mac뿐만 아니라, 윈도우즈 및 리눅스 등 다양한 플랫폼과 다양한 파일 시스템도 지원해 준다. 사용방법은 Mac에서 터미널을 통해 사용하는 것과 다를 바가 없다. 포맷한 HDD의 복구율을 최상으로 유지하려면, 포맷 후 다른 파일을 다시 저장하거나 하면 안된다. PhotoRec의 좋은 점이 뭐냐면, 복구 작업 중, 복구 대상 HDD를 자동으로 읽기전용(Read-only)으로 설정하기 때문에 실수로 HDD에 파일을 덮어 씌우는 실수를 방지할 수 있게 해준다.


아래는, Mac에서 PhotoRec을 이용해 파일을 복구하는 과정이다. Mac에서 PhotoRec를 다운받아 압축을 푼 디렉터리로 가서, 다음과 같이 실행하면 된다.


$ ./photorec


실행 후에는, 나의 Mac 계정 권한으로 접속이 가능한 저장장치의 목록이 나온다. 관리자 (sudo)권한이 없으면, 주요 하드디스크를 볼 수 없다.  커서키를 이용해 Sudo로 가서 엔터를 누른다.

그러면 Sudo권한을 받기위한 암호 입력 창이 나오며, 내 계정의 암호를 입력하면 된다.

Sudo 권한을 얻었다면, 내 컴퓨터와 연결된 모든 저장 장치를 볼 수 있다. 나의 복구 대상 하드는 500GB짜리이다. disk1과 rdisk1은 같은 드라이브로 생각이 되는데, 나는 disk1으로 선택한 후 엔터를 쳤다.

다음으로, 복구 대상하드의 대상 파티션을 선택 할 수 있다. 간혹, 작은 사이즈의 듣보잡 파티션들이 나오는데, 무시하고, Whole disk (전체 디스크)를 선택을 했다.

위 화면에서 [File Opt]메뉴로 들어가면, 복구시 내가 원하는 파일 형식만 복구할 수도 있다. 커서키나 스페이스바로 [X]체크를 없애면, 복구 대상에서 제외된다. 사진이나 특정 동영상, 문서등을 복구하고 싶을 때 유용한 기능이다. 필요한 파일만 복구를 하면, 복구 시간도 줄일 수 있고, 복구 파일을 저장해야 할 다른 저장장치가 용량이 부족할 경우, 대비할 수 있다.

'q'를 누르면 다시 디스크 목록이 나오는 메인 메뉴로 돌아온다. 그 곳에서,  복구하고 싶은 disk를 선택(나의 경우 disk1)하면, 파일시스템을 선택하는 화면이 나온다. 포맷으로 지워진 하드의 기존 파일시스템이 Mac용 파일시스템이기에, HFS+가 있는 Other를 선택했다. 윈도우즈 사용자도 Others를 선택하면 된다. ext파일시스템은 리눅스나 유닉스 기반 운영체제의 파일시스템이다.

파일시스템을 선택하면, 실제 복구된 파일이 저장이 될, 경로를 지정할 수 있다. 컴퓨터 안에 있는 다른 하드디스크나, 외장하드를 연결했을 경우에는, /Volumes/ 디렉터리에서 연결된 다른 디스크나 외장하드로 경로를 설정해주면 된다. 해당 경로로 들어간 후 'c' 키를 누르면 끝.

파일 복구를 위해, 복구될 파일을 저장할 여유공간이 충분한 다른 하드디스크가 필요하다. 나는 500GB의 용량의 HDD를 포맷 했는데, 실제 사용량은 200GB 정도 밖에 안되서, 200GB 용량의 여유가 있는 USB 외장 HDD를 연결해서, 그 곳에 복구된 파일이 저장이 되도록 했다. 복구된 파일들은 recup_dir.[일련번호] 디렉터리 안에, f[시작섹터번호].[확장자] 등의 형식 등으로 저장이 된다. 한 디렉터리에 파일이 500개씩 저장이 된다.

복구된 파일이 저장될 다른 하드디스크가 용량이 모자르게 되면, PhotoRec 스스로 복구를 잠시 중단하고, 사용자에게 여유 공간이 있는 다른 하드디스크나 다른 경로를 설정할 수 있도록 메뉴를 지원해준다.

만약에, 여분의 하드디스크가 없을 경우, 대안으로 사용할 수 있는 방법이 복구된 파일 중 굳이 복구가 필요없는 파일을 복구 중 미리 삭제하는 것이다. (물론 앞에 설정을 통해 딱 필요한 파일만 복구하게 할 수도 있지만, 나는 모든 복구 가능한 파일들을 모두 선택해 복구를 걸었다.) Mac에서는 여러개의 터미널 실행이 가능하기 때문에, 복구파일이 저장되는 경로로 이동을 한 후 아래의 명령을 실행하면 된다. /Volumes/JCSSD는 나의 외장하드 경로이니, 자신의 외장하드 경로로 변경하여 실행해야 한다. (삭제 명령은 주의 깊게 사용하기 바란다. 괜히 지우지 말아야 할 파일을 지웠다가는 PhotoRec을 처음부터 다시 돌려야 하는 불상사가 발생할 수도 있으니... 복구 시간은 500GB를 기준으로 최대 2일 이상 걸릴 수 있다.)


$ cd /Volumes/JCSSD/                           <=== 복구파일이 저장이 되는 외장 하드디스크 경로로 이동하기

$ find . -type f -name '*.plist' -delete    <=== 복구할 필요가 없는 plist라는 확장자를 가진 모든 파일 삭제

$ find . -type f -name '*.sqlite' -delete   <=== 복구할 필요가 없는 sqlite라는 확장자를 가진 모든 파일 삭제

find: ./.Trashes: Permission denied        <=== 이와 같은 메시지가 나올 수 있는데 그냥 무시 하면 됨.

$ find . -empty -type d -delete              <=== 파일 삭제 후 빈 디렉터리도 삭제


위의 예제에서는 확장자가 plist 그리고 sqlite를 지웠는데, 사용자의 상황에 따라, 불필요한 다른 확장자를 가진 파일도 동일한 방식으로 삭제를 하면 된다. 위 그림 중,  gz이나 class파일들이 있는데, 나의 경우는 모두 복구할 필요가 없는 파일들이라, 복구 도중 위의 명령을 통해 삭제 했다.


긴혹, 이미지 썸네일 같이 파일 용량이 작은 이미지 파일을 삭제하고 싶을 때가 있다. 다음의 명령으로 30kb보다 작은 크기의 파일을 일괄 삭제 할 수 있다. -30k 대신 -1M 하면 1MB 이하 파일을 지우고, +1M로 하면 1MB이상 파일을 지우게 된다. +, - sign을 주의하며 사용해야 한다. Mac에서는 사이즈 단위 옵션으로 c (byte), k (kilobyte), M (megabyte), G (gigabyte), T (terabyte), P (petabyte)를 사용할 수 있다. size옵션을 두번 쓰면 범위를 정할 수도 있다.


find . -type f -name '*.jpg' -size -30k -delete

find . -type f -name '*.jpg' -size +30k -size -50k -delete      <=== 크기가 30-50k 사이에 있는 jpg파일 삭제


복구가 완료가 되면, 복구 된 파일들이,  HDD에서 복구된 순서대로, 파일 형식과 상관없이 500개씩 한 디렉터리에 순차적으로 저장이 되기 때문에, 내가 원하는 파일을 찾기가 쉽지 않다. find 명령어를 이용하여, 파일 크기나 확장자를 통해 찾는 방법 밖에 없다. 문서의 경우, Mac이 index를 다 했을 경우, 문서 내의 키워드를 통해 Finder의 검색 기능으로 통해 쉽게 찾아볼 수 있다.


복구 시간은 500GB를 기준으로 최대 2일 이상 걸리니, 복구 과정을 인내로 기다려야 한다.


지워진 파일 중에, 이번 달에 발표할 박사논문 디펜스 발표 자료 pptx파일이 있었는데, 간단히 find 명령을 통해, 복구된 파일중 pptx파일만 따로 복사해서 특정 디렉터리에 모두 모아놓고 차례차례 찾아보니, 다행히 복구가 잘 되었다. find명령을 통해 찾은 파일들을 특정 디렉터리(나의 경우는 /Users/MyID/Download/pptx)에 저장하는 명령어는 다음과 같다. 마지막에 \;를 반드시 넣어야 실행된다. 찾아진 pptx파일이 34개 밖에 안되어서, 삭제된 박사논문 발표 자료를 어렵지 않게 찾을 수 있었다. PhotoRec개발자에게 다시 한 번 심심한 감사를 전한다.

$ find . -type f -name '*.pptx' -exec cp {} /Users/MyID/Download/pptx \;


복구된 파일은, 자동으로 붙여진 이름이 파일명이 되기 때문에, 같은 확장자의 파일들이 엄청 많으면, 일일이 찾아보기가 만만찮다. 혹시라도, 찾고 싶은 파일의 대충의 크기를 알고 있다면, 다음의 명령을 이용하여, 찾아지는 파일 수를 상당히 줄일 수 있다. 아래 예시는 파일 크기가 300-500KB사이인 pptx파일을 찾은 후 내가 지정한 디렉터리에 복사해 주는 명령이다.

$ find . -type f -name '*.pptx' -size +300k -size -500k -exec cp {} /Users/MyID/Download/pptx \;


사진의 경우, 같은 사진이 여러장 복구되는 경우가 있었다. 아마 예전에 사진을 복사하고 지우는 과정에서 남겨졌던 사진 흔적들까지 복구가 되는 바람에 발생된 일인 것 같다. PhtoRec의 놀라운 복구 능력이라 할 수 있겠다. 같은 사진이 여러장 있으면 하드디스크 용량도 많이 잡아 먹기에 아래의 명령을 이용해서 중복 사진을 삭제했다. 중복사진 중 원본 하나는 남겨둔다. 혹시라고 삭제하다가 원본도 지울까 걱정이 되시는 분은, 명령어를 돌리기전, '| xargs rm' 부분을 삭제 후 실행하면, 중복사진 목록이 잘 나오는지 확인을 할 수 있다. 해당 목록에 나온 파일들만 삭제가 되는 것이니, 확인 후 문제가 없으면 그 때 전체 명령 실행하면 안전하겠다.

$ find . -type f -name '*.jpg' -exec md5 '{}' ';' | sort -k 4 | uniq -f 3 -d | sed -e "s/.*(\(.*\)).*/\1/" | xargs rm


이 번 포스팅 에서는,

(1) PhotoRec라는 무료 파일 복구 소프트웨어에 대해서 알아보았다.

(2) PhotoRec의 GUI는 불편할 수 있지만, 조금만 익숙해지면, 사진, 문서 등 다양한 종류의 파일들을 잘 복구해 준다.

(3) 복구 파일들을 저장하는 또 다른 외장하드의 용량이 부족한 경우를 대비한 몇 가지 팁도 살펴보았다.

(4) 복구된 수많은 파일 중 원하는 파일을 찾는 팁도 몇 가지 알아보았다.

(5) 원본 파일 하나는 유지한 채 중복 파일을 삭제하는 팁도 알아보았다.



이 글이 도움이 되셨다면, 공감을 눌러주세요!

반응형