← ~/notes · 3 min read

PhotoRec로 USB 30GB 복구 — 공인인증서, 장부 엑셀, 사진까지

포맷도 안 했는데 USB가 안 읽힌다. PhotoRec 한 번이면 거의 다 살린다.

목차
  1. PhotoRec이 뭐냐
  2. 설치 (macOS)
  3. 디스크 식별
  4. PhotoRec 실행
  5. 진행 화면
  6. 결과
  7. 분류 노가다
  8. 1) 미리보기 일괄 생성
  9. 2) 크기 기반 필터링
  10. 3) EXIF 날짜로 분류
  11. 4) 중복 제거
  12. 실제 살린 것들 (가족 USB)
  13. 안 살아나는 케이스
  14. 만들면서 알게 된 것들
  15. 한 줄 결론

가족 USB가 갑자기 안 읽힌다고 들고 왔다. 포맷 안 했고, 안 떨어뜨렸고, 평소처럼 빼고 꽂았을 뿐.

Mac에 꽂으면:

"이 디스크는 이 컴퓨터에서 읽을 수 없습니다"
[초기화] [무시] [꺼내기]

당연히 [초기화] 누르면 안 됨. PhotoRec 깔고 30분이면 끝.


PhotoRec이 뭐냐

PhotoRec은 30년 된 데이터 복구 도구. 파일시스템이 깨졌어도 파일 시그니처(magic bytes) 기반으로 직접 스캔해서 복구.

  • JPEG → FF D8 FF E0 ... FF D9 패턴
  • PDF → %PDF-...%%EOF
  • Office → ZIP 컨테이너 시그니처 + 내부 XML
  • …

지원 포맷 480개 이상. 한국에서 자주 만나는 것:

포맷시그니처복구 가능
JPEG/PNG표준 매직✓
HWP한컴 헤더✓
HWPXZIP 기반✓
공인인증서 (.crt, .key)DER/PEM✓
엑셀 .xlsxZIP 기반✓
MP4/MOVftyp 박스✓

설치 (macOS)

brew install testdisk

testdisk 패키지 안에 photorec이 들어있음 (같은 개발자).


디스크 식별

USB가 안 읽힌다고 해서 장치 노드가 없는 건 아니다. 운영체제는 디스크 자체는 인식하는데 파일시스템이 깨진 것.

$ diskutil list
/dev/disk0 (internal):
   ...
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *32.0 GB    disk4
   1:        Microsoft Basic Data                        32.0 GB    disk4s1

/dev/disk4 가 그 USB. 파티션은 보이지만 마운트 안 됨 = 파일시스템 메타데이터 손상.


PhotoRec 실행

sudo photorec /dev/disk4

대화형 TUI. 단계별 선택:

PhotoRec 7.2 (Feb 2024)

1. 디스크 선택 → /dev/disk4
2. 파티션 테이블 → Intel/PC partition (USB 기본)
3. 파티션 선택 → No name (32GB)  ← "no name"으로 표시되는 게 정상
4. 파일시스템 → Other (FAT/NTFS/exFAT/HFS/...)  ← 자동 감지 안 되면 Other
5. 영역 → Whole: extract files from whole partition
6. 출력 디렉터리 → 외장 SSD에 새 폴더 (USB 자기 자신은 안 됨)

진행 화면

Pass 1 - Reading sector 234567/62500000
Files saved: 1247
  jpg: 450
  png: 89
  hwp: 23
  xlsx: 12
  pdf: 31
  ...

Estimated time to completion: 18 minutes

30GB USB는 약 30분. 전 영역 스캔이라 빈 영역도 다 읽어봄.


결과

복구된 파일은 recup_dir.1, recup_dir.2, … 폴더에 1000개씩 분배.

output/
├── recup_dir.1/
│   ├── f0000001.jpg
│   ├── f0000002.jpg
│   ├── ...
│   └── f0000999.hwp
├── recup_dir.2/
│   ├── f0001000.xlsx
│   └── ...
└── ...

파일명은 다 잃는다. 시그니처로 발견한 거니 원본 파일명은 메타데이터에 없음. 확장자만 알 수 있음.


분류 노가다

이 단계가 사실 진짜 작업. 천 개 jpg 중 어느 게 작년 가족여행이고 어느 게 인터넷 캐시인지 골라야 함.

자동화 팁:

1) 미리보기 일괄 생성

# macOS Finder 미리보기로 일괄 보기
open output/recup_dir.1/
# Cmd+A → 스페이스로 빠르게 훑기

2) 크기 기반 필터링

# 100KB 이하 jpg는 보통 캐시/썸네일
find output/ -name "*.jpg" -size -100k -delete

3) EXIF 날짜로 분류

# 날짜별 폴더로 자동 분류
exiftool -d "%Y-%m-%d" '-Directory<DateTimeOriginal' -r output/

4) 중복 제거

brew install fdupes
fdupes -r output/ -dN  # 중복 자동 삭제

실제 살린 것들 (가족 USB)

  • 사진 약 4,000장 (대부분 캐시 썸네일, 진짜는 800장 정도)
  • 한컴 .hwp 23개 (이력서, 발표 자료, 문서)
  • 엑셀 .xlsx 12개 (가계부, 장부)
  • 공인인증서 1세트 (.crt + .key) — 이게 진짜 중요

가족 입장에선 “다행이다” + “그동안 백업 안 한 게 미안하다”.


안 살아나는 케이스

  • 포맷 후 다시 쓴 영역: 한 번 새 데이터로 덮으면 시그니처도 사라짐
  • 암호화 디스크: 키 없으면 복호화 못 함
  • 물리적 손상 (낙하, 침수): 디스크 노드 자체가 안 잡히면 PhotoRec도 무력. 데이터 복구 업체로.

USB가 인식은 되는데 마운트만 안 되는 경우 = 거의 다 살릴 수 있다.


만들면서 알게 된 것들

파일시스템과 데이터는 별개다. 파일시스템 메타(파일 위치, 이름, 디렉터리 구조)가 깨져도 데이터 자체는 디스크에 그대로 있다. 시그니처로 직접 찾을 수 있음.

무조건 출력은 다른 디스크로. 같은 USB에 출력하면 복구하면서 원본 덮어쓰는 모순. 외장 SSD/HDD 또는 본 컴퓨터 디스크로.

“초기화하시겠습니까?”는 절대 누르지 말 것. OS가 권하는 초기화는 파일시스템 재생성 = 메타데이터 새로 씀 = 복구 가능성 ↓.

PhotoRec는 30년 된 도구다. 인터페이스는 90년대지만 그래서 안정적이고 모든 OS에서 돈다. testdisk + photorec 조합이 데이터 복구 첫 도구.


한 줄 결론

USB/외장하드가 갑자기 안 읽혀도 절대 초기화 누르지 말고 PhotoRec 한 번. 30분 + 외장 디스크 + 분류 노가다 이틀이면 거의 다 살림.