안녕하세요!
오늘은 저처럼 실수로(멍청하게) 하드디스크(HDD)를 포맷해버렸을 때,
삭제된 파티션을 복구하는 Tool을 소개해드리고 사용하는 방법을 설명해드리려고 합니다.
2020/05/25 - [흔남 이야기/[흔남] IT] - 멘붕... 시놀로지 NAS 하드디스크 실수로 초기화해버려서 자료를 다 날려버렸습니다.
일단 제가 소개해드리는 Tool은 바로 "testdisk"라는 Tool인데요
지원하는 OS는 아래와 같습니다 (우선 제가 아는 OS는 물론 처음 보는 OS까지 지원하고 있네요)
- DOS (either real or in a Windows 9x DOS-box),
- Windows 10/8.1/8/7/Vista/XP, Windows Server 2016/2012/2008/2003
- Linux, Unix
- FreeBSD, NetBSD, OpenBSD,
- SunOS and
- MacOS X
한 가지 아쉬운 점은 저 같은 MS사의 노예들은 GUI(Graphical User Interface)가 익숙한데 testdisk는 어떤 OS에서든
CLI(Command Line Interface) 환경에서 작업을 해야 한다는 점이에요
물론 프로그래머들처럼 코딩을 해야 하는 건 아니고 그냥 흔히 말하는 DOS화면인 거죠 저희는 설명에 따라 단축키만 입력하면 된답니다.
저는 복구하는 HDD가 시놀로지(리눅스 기반) OS에 연결이 되어있어서 리눅스 기준으로 설명하도록 할게요
(현재 복구 중이어서 포스팅에 사용한 자료는 Oracle Free Tier에 생성한 Linux(Ubuntu 18.04)에서 작업하였습니다.)
만약 정말 중요한 자료를 복구하셔야 한다면 손실이 발생한 시점에서 HDD에 어떠한 작업도 하지 마시고, 전문업체에 의뢰하시기를 추천드립니다.
1. TestDisk 다운로드 및 실행하기
TestDisk - CGSecurity 다운로드 페이지
## TestDisk 다운로드 (상단 링크에서 최신버전을 OS에 맞게 다운로드 - 가급적이면 Beta는.......X)
root@wordpress:/mnt/app# wget https://www.cgsecurity.org/testdisk-7.2-WIP.linux26-x86_64.tar.bz2
--2020-05-28 22:07:17-- https://www.cgsecurity.org/testdisk-7.2-WIP.linux26-x86_64.tar.bz2
Resolving www.cgsecurity.org (www.cgsecurity.org)... 193.168.50.236
Connecting to www.cgsecurity.org (www.cgsecurity.org)|193.168.50.236|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7436718 (7.1M) [application/x-bzip2]
Saving to: ‘testdisk-7.2-WIP.linux26-x86_64.tar.bz2’
testdisk-7.2-WIP.linux26-x86_ 100%[==============================================>] 7.09M 1.83MB/s in 3.9s
2020-05-28 22:07:22 (1.83 MB/s) - ‘testdisk-7.2-WIP.linux26-x86_64.tar.bz2’ saved [7436718/7436718]
## TestDisk 압축해제
root@wordpress:/mnt/app# tar -xvf testdisk-7.2-WIP.linux26-x86_64.tar.bz2
testdisk-7.2-WIP/
testdisk-7.2-WIP/README_dev_photorec.txt
testdisk-7.2-WIP/fidentify_static
testdisk-7.2-WIP/jni/
testdisk-7.2-WIP/jni/Android.mk
testdisk-7.2-WIP/readme.txt
testdisk-7.2-WIP/ChangeLog
testdisk-7.2-WIP/AUTHORS
testdisk-7.2-WIP/VERSION
testdisk-7.2-WIP/COPYING
testdisk-7.2-WIP/documentation.html
testdisk-7.2-WIP/testdisk_static
testdisk-7.2-WIP/photorec.8
testdisk-7.2-WIP/fidentify.8
testdisk-7.2-WIP/NEWS
testdisk-7.2-WIP/icons/
testdisk-7.2-WIP/icons/Makefile.in
testdisk-7.2-WIP/icons/testdisk.ico
testdisk-7.2-WIP/icons/48x48/
testdisk-7.2-WIP/icons/48x48/apps/
testdisk-7.2-WIP/icons/48x48/apps/qphotorec.png
testdisk-7.2-WIP/icons/photorec.ico
testdisk-7.2-WIP/icons/Makefile.am
testdisk-7.2-WIP/icons/scalable/
testdisk-7.2-WIP/icons/scalable/apps/
testdisk-7.2-WIP/icons/scalable/apps/qphotorec.svg
testdisk-7.2-WIP/l/
testdisk-7.2-WIP/l/linux
testdisk-7.2-WIP/testdisk.8
testdisk-7.2-WIP/INFO
testdisk-7.2-WIP/photorec_static
testdisk-7.2-WIP/THANKS
testdisk-7.2-WIP/README.md
## 압축해제 완료여부 확인
root@wordpress:/mnt/app# ls
testdisk-7.2-WIP testdisk-7.2-WIP.linux26-x86_64.tar.bz2
## 디렉토리 이동
root@wordpress:/mnt/app# cd testdisk-7.2-WIP
## 파일 목록 확인
root@wordpress:/mnt/app/testdisk-7.2-WIP# ls
AUTHORS INFO README_dev_photorec.txt documentation.html icons photorec.8 testdisk.8
COPYING NEWS THANKS fidentify.8 jni photorec_static testdisk_static
ChangeLog README.md VERSION fidentify_static l readme.txt
## TestDisk 실행
root@wordpress:/mnt/app/testdisk-7.2-WIP# ./testdisk_static
2. 로그(Log) 생성
웬만하면 그냥 로그 생성 [ Create ] 하시면 되는데, 다음과 같은 경우에는 다른 항목을 선택하시면 됩니다.
[ Append ] 는 현재 작업을 기존에 있는 로그 파일에 추가(연결해서) Logging 할 때
[ No Log ] 는 읽기 전용 이거나 로그 파일을 생성할 수 있는 공간이 없을 경우
뭐.... 아주 특별한 상황이 아니면 Create 하시면 됩니다.
3. Disk 선택 (Select a media)
복구하고자 하는 Disk를 키보드 화살표 (↑, ↓)로 이동 후 Enter키로 선택해주시면 되는데요
하단에 [ Proceed ]와 [ Quit ]가 있는데 화살표 (←, →)로 이동이 가능합니다.
[ Proceed ]에 커서를 위치하고 Enter키로 선택하시면 돼요
저 같은 경우는 /dev/sda 를 선택하도록 할게요
4. 파티션 종류 선택
TestDisk가 자동으로 파티션 테이블 형태를 찾아주기 때문에 기본값으로 그냥 진행하시면 되는데,
간혹 잘못되어있다면 화살표로 이동 후 Enter키로 선택하시면 됩니다.
5. 파티션 분석 메뉴
메뉴를 보시면 차례대로 [ 분석 / 고급 / 지오메트리 / 옵션 / 종료 ] 가 있는데요.
어려워하실 필요 없습니다.!! 그냥 [ Analyse ]에 커서가 잘 있는지 확인(중요!) 하시고 Enter키만 누르시면 돼요
사실 그 외의 옵션들을 설정해야 할 정도 혹은 설정하시는 법을 아신다면.... 선택지는 2가지가 있습니다.
1) 댓글로 아주 상세하게 설명을 해준다
2) 개인이 복구할 수준이 아니니 더 이상 손대지 말고 전문업체에 의뢰한다
6. 복구할 파티션 리스트 및 Quick Search (제발 여기서 끝나기를... 다 같이 기도합시다)
보시면 파티션이 3가지가 나오는데요.
만약 같은 파티션이 여러 개 있다면 그 파티션은 손상되었다는 뜻입니다.
이제 하단에 보시면 [ Quick Search ]가 보이시죠?
그냥 Enter키를 뙇!
7. 하늘이 도와주었는지 확인! (Quick Search로 제대로 복구할 준비가 되었는지 확인)
보시면 저는 손상된 파티션이 없는데요
만약 손상된 파티션이 있다면 두 번째 사진처럼(CGSecurity의 Guide에서 가져왔어요)
동일한 파티션인데 2개가 나오게 됩니다. (Partition 2, 3) 2개가 있죠?
이제 손상된 파티션에 커서를 옮기고 "p"키를 눌러서 디렉터리/파일들이 잘 있는지 확인하셔야 합니다.
파티션 목록에서 "p"키를 누르면 위와 같은 화면이 나올 텐데요
리눅스 사용자라면 익숙하시죠?
ls -al(alias : ll) 명령어와 같은 화면입니다. (자세한 내용은 아래 포스팅을 참조하세요)
2020/05/29 - [흔남 이야기/[흔남] IT] - [리눅스(Ubuntu/CentOS)] ls 명령어 옵션설정으로 디렉토리/파일 목록 확인하기 및 파일 크기에 용량 단위 추가하기
여기서 "h"키를 누르시면 숨김 파일(빨간색)들은 안 보이게 설정이 됩니다 (기본값 : 숨김 파일 보이기)
1) 파일 속성 및 권한 (자세한 설명은 차후 포스팅 예정)
2) 파일크기 (설명... 필요 없겠죠? / Byte 단위입니다.)
3) 파일 이름 (여기서 . 은 현재 디렉토리를 뜻하고, ..은 상위 디렉토리를 뜻 합니다.)
ex) 현재 디렉토리가 /mnt/disk/test 일 때,
. : /mnt/disk/test
.. : /mnt/disk
이제 각 디렉토리에 들어가셔서 필요한 디렉토리/파일이 다 있는지 (기도하면서) 확인하시고 "q"키를 눌러 파티션 목록 화면으로 이동하시고 Enter키를 눌러서 계속 진행하세요
만약에... 혹시나 만약에... 저처럼... 필요한 내용들이 보이지 않는다면.......ㅠㅠ 7-2단계로 이동하시고,
하늘이 도와 제대로 다 확인되셨다면 8단계로 이동하시면 돼요
2020/05/28 - [흔남 이야기/[흔남] IT] - [시놀로지/리눅스] 포맷해버린 하드디스크(HDD) 복구 결과
7-2. 하늘이 버린 자여... (Deeper Search로 제대로 자료 찾아보기)
이 내용은 읽지 않으시면 좋겠지만... 아지 포기하기는 이릅니다
간단하게 해서 안되면 제대로 해봐야겠죠?
하단 메뉴들을 보시면 [ Deeper Search ]라고 있습니다.
말 그대로 깊숙이 파헤쳐보겠다는 뜻입니다. (대신 드릅게 오래 걸리죠)
화살표(←, →)로 [ Deeper Search ]에 커서를 두시고 Enter키를 누르시면 됩니다. (기본값으로 선택되어 있어요)
그러면 TestDisk가 열심히 일을 합니다. (나오는 내용들은 뭔지 잘 모르겠네요... 뭐 굳이 알 필요 없으니 걱정 마세요)
이 작업은 디스크 용량에 따라 작업 시간이 천차만별인데요
제가 작업 중인 OCI (Oracle Free Tier)의 50GB 기준으로 약 19분 정도가 걸리네요
그리고 실제로 (멍청하게) 날려버려서 복구 중인 디스크는 8TB(OCI의 약 164배... 네요)는4시간 50분이 지난 현재 38%가 완료되었네요...
산술적으로 계산하면 52시간 정도 걸리는데 아무래도 대역폭이나 메모리가 차이가 나서 그런가 봐요
Deeper Search가 완료되면 위와 같이 나오는데요
음... 일단 디스크가 너무 작다는 내용과 복구가 불가능한 리스트를 보여주는데 무시하시고 Enter키를 누르시면 됩니다
8. TestDisk가 찾아준 파일들 덮어쓰기(?) / 복구하기
Deeper Search가 완료된 모습인데요 7단계의 파티션 목록과는 많이 다르죠?
여기서도 똑같이 "p"키로 필요한 자료들이 잘 있는지 확인을 하신 후에 Enter키를 눌러주시면 됩니다.
자료가 있다면 [ Write ]를 선택하신 후 Enter키를 누르셔서 복구를 하시면 됩니다.
만약에!! 여기서도 자료가 없다면....? ㅠㅠ "q"키를 입력해서 TestDisk를 종료하시고..
사실 정말 중요한 자료라면... 포스팅 시작할 때 드린 말씀과 같이 이러한 과정들을 거치지 않고 바로 전문업체에 의뢰하시는 게 가장 좋은 방법이고, 이미 진행을 하셨다면 여기서라도 "q"키로 종료하고 의뢰를 하시는 게 좋아요
만약 [ Write ]로 덮어써버리면 디스크에 파티션이 재설정되면서 자료 손실이 발생할 가능성이 더욱 커지게 됩니다.
이상으로 실수로 하드디스크를 포맷했을 때 복구하는 방법에 대한 포스팅을 마치도록 하겠습니다.
최고의 방법은 항상 데이터를 백업하는 것이고, 차선책은 포맷이나 파일 삭제 시 신중하게 하는 것입니다.
저같이 (멍청한) 실수하지 마시고 모두들 소중한 데이터 안전하게 관리하세요 ^^