English

KNOWLEDGE

지워도, 안 지워져요

포맷과 플래시가 먼저 지우는 것은 파일 내용이 아니라 어디에 뭐가 있는지 적은 지도(파티션 테이블과 파일 시스템의 첫머리)라서, 새로 덮어쓰지 않은 본문은 그대로 있고 되살릴 수 있다.

지도 지우고 되살리기

외장하드에 이미지를 잘못 플래시하는 장면을 따라가 보자. 1번으로 지도를 지우고, 2번으로 새 이미지가 덮는 양을 바꾼 뒤, 3번으로 되살려 본다. 한 칸은 디스크의 2.5%다.

  • 지도(파티션 테이블)
  • 부트 영역(복사본이 바로 옆)
  • 파일 목록(폴더 항목)
  • 사진
  • 문서
  • 영상
  • 음악
  • 메모
  • 디스크 끝의 지도 복사본
  • 플래시가 0으로 채운 칸
  • 새 이미지가 덮은 칸

지금은 모두 정상이다. 1번을 눌러 지도를 지워 보자.

  1. 1
  2. 2

    실제 이미지는 3~10 GB 안팎이라서 큰 외장하드에서는 맨 앞의 아주 작은 부분만 덮인다. 그림은 잘 보이게 과장했다.

  3. 3
탐색기
내 외장하드 (E:)폴더와 파일이 보인다
디스크 관리
디스크 4 · 온라인
exFAT · 정상
사진✓ 정상
문서✓ 정상
영상✓ 정상
음악✓ 정상
메모✓ 정상

어떻게 된 걸까

  1. 디스크에는 지도와 본문이 따로 있다. 지도는 어디에 뭐가 있는지 적은 곳이고, 본문은 파일 내용이 든 칸이다. exFAT에서는 지도가 여러 겹이다. 디스크 맨 앞의 파티션 테이블, 볼륨 맨 앞의 부트 영역, 폴더 안의 파일 목록(폴더 항목)이다. 확인됨 출처: Microsoft exFAT 사양 Table 3, §6
  2. 포맷과 플래시는 먼저 지도를 지우거나 새로 쓴다. 플래시 도구(Raspberry Pi Imager)는 쓰기 전에 파티션 정보를 지우고(Windows), 디스크의 앞 1 MiB와 끝 1 MiB를 0으로 채운 뒤, 이미지를 맨 앞부터 이미지 길이만큼 쓴다. 이미지의 첫 덩어리는 검증이 끝난 뒤에 쓴다. 빠른 포맷은 파일 테이블과 루트 디렉터리를 지우고, 전체 포맷은 모든 칸에 쓴다. 확인됨 출처: Raspberry Pi Imager 소스(downloadthread.cpp, main 브랜치, 2026-11-04에 읽음), Microsoft format·Format-Volume 문서, Raspberry Pi OS 다운로드 페이지(필요 저장 공간 2,656~9,504 MB). 설치한 버전에 따라 다를 수 있다
  3. 지도가 없으면 운영체제는 빈 디스크로 본다. 탐색기에서 드라이브가 사라지고, 디스크 관리에는 장치만 남는다. 덮이지 않은 본문은 그대로라서, 지도를 다시 그리거나 파일 카빙(파일 맨 앞의 표지로 찾는 방법)으로 되살린다. 정말 사라지는 것은 새로 덮어쓴 범위뿐이다. 확인됨 출처: Microsoft exFAT 사양 §3.1, Microsoft 디스크 관리 문서(디스크를 초기화하고 볼륨을 만든 뒤에 드라이브 문자를 붙인다), 이 페이지의 실험(직접 구현)

실험에서 본 것

128 MiB 디스크 이미지에 exFAT를 만들고 파일 20개를 쓴 뒤, 파티션 정보를 지우고 맨 앞 N바이트를 무작위 바이트로 덮었다. 시나리오 36개다. 직접 구현한 코드와 macOS의 exFAT 드라이버로 확인했다. 플래시가 끝 1 MiB를 0으로 채우는 단계는 따라 하지 않았다(파일이 디스크 끝에 없다).

얼마나 확인했나

확인됨exFAT 부트 영역과 복사본의 위치, 표지 바이트, 폴더 항목의 짜임(사양). 플래시 도구가 파티션 정보를 지우고 앞뒤 1 MiB를 0으로 채운다는 것(Raspberry Pi Imager 소스). 이 페이지의 실험 결과(직접 구현한 코드와 macOS 드라이버).

가설실제 복구 도구가 exFAT 부트 영역의 복사본으로 되살리는지, 부트 영역이 사라진 뒤 폴더 항목을 주워 이름을 되살리는지. TestDisk 문서는 exFAT의 잃어버린 파티션 찾기를 적지만 부트 섹터 복구는 FAT32와 NTFS만 적는다.

모름실제 Windows가 만든 디스크에서 볼륨이 어디서 시작하는지(Microsoft 문서에서 찾지 못했다). 파티션 정보를 지운 디스크를 디스크 관리가 어떻게 표시하는지. 쪼개진 파일과 SSD에서의 결과.

흔한 오해

오해포맷하거나 플래시를 누르면 디스크의 데이터가 지워진다.

실제로는대부분 지도만 지워진다. 빠른 포맷은 파일 테이블과 루트 디렉터리를 지우고, 이미지 쓰기는 앞뒤 1 MiB를 0으로 채운 뒤 이미지 길이만큼만 덮는다. 전체 포맷이나 SSD의 TRIM처럼 본문까지 비우는 경우만 되살릴 수 없다.

자주 묻는 질문

포맷하면 데이터가 정말 지워지나?

빠른 포맷은 파일 테이블과 루트 디렉터리를 지운다(Microsoft format /Q). 전체 포맷은 디스크의 모든 칸에 쓰기 때문에(Microsoft Format-Volume -Full) 옛 본문을 되살릴 수 없다. 이 페이지의 실험에서는 파티션 정보를 지우고 디스크 앞부분을 덮어도, 덮이지 않은 본문의 바이트는 하나도 달라지지 않았다.

플래시가 0%에서 멈췄다. 외장하드는 어떻게 되나?

Raspberry Pi Imager는 이미지를 쓰기 전에 파티션 정보를 지우고(Windows), 디스크의 앞 1 MiB와 끝 1 MiB를 0으로 채운다. 이미지의 첫 덩어리는 검증이 끝난 뒤에 마지막으로 쓴다. 그래서 0%에서 멈췄다면 보통 지도와 이 두 끝만 사라졌고, 그 밖의 본문은 그대로다. 볼륨이 맨 앞 1 MiB 안에서 시작했다면 부트 영역도 0이 되었을 수 있고, 볼륨이 어디서 시작하는지는 디스크마다 다르다. 이 설명은 Imager 소스(main 브랜치) 기준이라 설치한 버전에 따라 다를 수 있다.

탐색기에서 드라이브가 사라졌는데 디스크 관리에는 왜 보이나?

장치 자체는 살아 있다. 디스크를 탐색기에서 쓰려면 초기화하고 볼륨을 만들어야 하고, 드라이브 문자는 그 볼륨에 붙는다(Microsoft 디스크 관리 문서). 파티션 정보가 지워지면 붙일 볼륨이 없어서 탐색기에서는 사라지고, 디스크 관리에는 디스크만 남는다.

exFAT에서는 디스크 맨 앞이 덮이면 끝인가?

아니다. 부트 영역 원본(섹터 0~11) 바로 뒤에 복사본(섹터 12~23)이 있어서(Microsoft exFAT 사양 Table 3), 원본만 덮였으면 복사본으로 되살릴 수 있다. 이 페이지의 실험에서는 덮은 양이 6,144바이트 이하일 때 파일 20개가 모두 이름까지 돌아왔다. 복사본의 첫 섹터까지 덮이면 둘 다 사라져서, 덮이지 않은 본문은 파일 카빙으로 내용만 꺼내야 한다.

덮어쓴 양 밖에 있던 예전 파일은 그대로 있나?

그렇다. Raspberry Pi Imager는 이미지를 맨 앞부터 이미지 길이만큼 쓰고 디스크 끝의 1 MiB를 0으로 채울 뿐 그 사이의 칸은 건드리지 않으므로, 본문의 바이트는 그대로다. 다만 열려면 맨 앞의 부트 영역과 파일 목록이 필요해서, 그게 덮였으면 이름 없이 내용만 꺼내야 한다. 오래된 파일이 뒤쪽에 있다는 보장은 없다. 이 실험에서는 먼저 쓴 파일이 앞쪽에 놓여 먼저 덮였다.

파일 카빙으로는 어떤 파일을 찾고, 어떤 파일을 못 찾나?

파일 카빙은 파일 맨 앞의 표지로 파일을 찾는다. JPG는 FF D8 FF, PDF는 %PDF로 시작한다. 글 파일(.txt)처럼 표지가 없으면 칸이 그대로여도 이 실험의 파일 카빙으로는 찾지 못했다. 머리가 덮이고 꼬리만 남은 파일도 찾을 수 없다.

SSD도 같은가?

SSD는 운영체제가 쓰지 않는 칸을 TRIM으로 알려 주면 그 칸을 내부에서 비울 수 있어서 본문이 사라질 수 있다. TRIM과 가비지 컬렉션 뒤에는 되살리기가 어렵거나 불가능할 수 있고, 드라이브 펌웨어에 따라 다르다. 이 페이지의 실험은 칸이 그대로 남는 저장 장치를 가정했다.

디스크를 잘못 지웠을 때 가장 먼저 할 일은?

그 디스크에 아무것도 쓰지 않는다. 복구는 새 데이터가 덮기 전까지의 경주이고, 새로 덮인 칸의 옛 본문은 되살릴 수 없다.

더 보기