TL;DR
- HDD 파기:
shred -v -n 3 -z /dev/sdX명령으로 무작위 데이터 덮어쓰기 후 0으로 채워 완전히 복구 불가능하게 만듭니다. - SSD 파기: SSD는 웨어 레벨링 특성상 덮어쓰기보다
blkdiscard /dev/sdX또는nvme-cli기반의 Secure Erase가 적합합니다. - 핵심 주의사항: 작업 전
lsblk로 대상 드라이브명을 정확히 확인해야 하며, 라이브 USB 환경에서 루트 파티션을 해제한 뒤 수행해야 합니다.
핵심 개념: HDD와 SSD의 물리적 구조에 따른 삭제 원리
리눅스 환경에서 하드디스크(HDD) 데이터를 영구 삭제하려면 shred나 dd 명령어로 블록 장치 전체에 무작위 데이터를 덮어쓰고, SSD는 blkdiscard나 NVMe CLI의 Secure Erase 기능을 활용해야 합니다. 일반적인 rm 명령어나 fdisk를 통한 파티션 삭제는 파일 시스템의 포인터만 제거할 뿐, 실제 블록 섹터의 데이터 본문은 그대로 남아 복구 도구로 손쉽게 되살릴 수 있습니다.
저장매체의 종류에 따라 최적의 삭제 기술이 다릅니다. Magnetic Platter를 사용하는 HDD는 전체 섹터에 0(Zero)이나 난수를 무작위로 덮어쓰는(Overwrite) 방식이 확실한 영구 삭제를 보장합니다. 반면, 플래시 메모리 기반의 SSD는 플래시 변환 계층(FTL)의 웨어 레벨링(Wear Leveling) 알고리즘 때문에 dd나 shred를 실행해도 실제 물리 블록 전체에 데이터가 균일하게 덮어씌워지지 않을 수 있습니다. 따라서 SSD의 경우에는 컨트롤러에 직접 블록 초기화를 명령하는 Secure Erase나 TRIM 제어 기법(blkdiscard)을 사용하는 것이 올바른 접근법입니다.
단계별 실행 가이드: shred 및 dd 명령어 활용 실습
1단계: 타겟 드라이브 식별 (공통)
잘못된 드라이브 삭제를 방지하기 위해 마운트된 디스크 정보를 정확히 확인합니다. 라이브 USB(Ubuntu Live Booting)로 부팅한 후 터미널을 열어 아래 명령어를 실행합니다.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
삭제할 대상 디스크의 경로(예: /dev/sdb 또는 /dev/nvme0n1)를 명확히 기록합니다. 경로를 잘못 지정하면 OS가 설치된 부팅 디스크나 백업 디스크가 파기될 수 있으므로 주의해야 합니다.
2단계: HDD 영구 삭제 (shred 명령어)
shred는 지정한 파일이나 블록 장치에 무작위 패턴을 덮어씌워 복구를 방지하는 리눅스 표준 유틸리티입니다.
sudo shred -v -n 3 -z /dev/sdb
-v(--verbose): 진행 상황을 화면에 표시합니다.-n 3: 무작위 난수 데이터로 3회 반복하여 덮어씁니다.-z(--zero): 마지막 패스에서 0(Zero)으로 덮어씌워 shred 수행 사실을 숨기고 깔끔한 상태로 만듭니다./dev/sdb: 파티션(/dev/sdb1)이 아닌 디스크 전체 블록 장치를 지정합니다.
3단계: HDD 난수 덮어쓰기 (dd 명령어)
dd 명령어는 블록 단위 덤프 및 복사에 사용되며, /dev/urandom 또는 /dev/zero 특수 장치 파일과 결합하여 전체 디스크를 채울 수 있습니다.
# 1패스: 난수로 전체 영역 채우기
sudo dd if=/dev/urandom of=/dev/sdb bs=4M status=progress conv=fdatasync
# 2패스: 0으로 깔끔하게 초기화
sudo dd if=/dev/zero of=/dev/sdb bs=4M status=progress conv=fdatasync
if: 입력 파일 (난수 생성기 또는 0 생성기)of: 출력 파일 (삭제 대상 블록 장치)bs=4M: 입출력 블록 크기를 4MB로 설정하여 작업 속도를 최적화합니다.status=progress: 전송 속도 및 진행률을 실시간으로 출력합니다.
4단계: SSD/NVMe 영구 삭제 (blkdiscard 및 nvme-cli)
SSD의 수명을 다각도로 보호하면서 내부 블록을 완전 초기화하려면 NVMe 전용 도구나 TRIM 명령을 활용합니다.
# SATA SSD 또는 NVMe SSD 전체 블록 DISCARD (TRIM)
sudo blkdiscard /dev/sdb
# NVMe SSD 전용 CLI로 Format & Secure Erase 실행
sudo nvme format /dev/nvme0n1 --namespace-id=1 --ses=1
--ses=1 옵션은 User Data Erase를 수행하여 드라이브 내부의 모든 암호화 키 및 데이터를 초기화합니다.
비교/체크리스트: 리눅스 데이터 파기 방식 비교
| 구분 | shred | dd | blkdiscard / nvme-cli | 일반 format / rm |
|---|---|---|---|---|
| 주요 대상 | HDD (전체 블록/파일) | HDD (전체 블록) | NVMe / SATA SSD | 단순 파일 정리 |
| 삭제 방식 | 난수/0 반복 덮어쓰기 | 난수/0 단순 덮어쓰기 | 컨트롤러 레벨 Block Clear | 파일 테이블 포인터 제거 |
| 복구 가능성 | 전문 복구 장비로도 불가능 | 불가능에 가까움 | 물리 파쇄 외 복구 불가능 | 소프트웨어로 손쉽게 복구 |
| SSD 안전성 | 낮음 (수명 저하, 미완성) | 낮음 (수명 저하) | 높음 (SSD 최적화) | 데이터 남아있음 |
| 처리 속도 | 느림 (횟수에 비례) | 보통 | 매우 빠름 (수초~수분) | 즉시 완료 |
실무 사례: 개발용 PC 매각 시 놓치기 쉬운 보안 요소
서브 서버나 개발용 우분투 PC를 정리할 때 저장장치 전체 덮어쓰기만 진행하고 마치는 경우가 많습니다. 그러나 실제 환경에서는 스토리지 블록 외에도 네트워크 및 외부 계정 연결 요소에서 유출 사고가 발생할 수 있습니다.
- Docker/Kubernetes 볼륨 및 시크릿: 외부 데이터 드라이브에 Docker 데이터 경로(
/var/lib/docker)를 지정해 두었다면, 해당 드라이브만 별도로 분리 제거하거나 전용 파기 작업을 거쳐야 합니다. - SSH Key 및 Git 자격 증명:
~/.ssh/id_rsa및~/.gitconfig에 저장된 개인/기업 인프라 접근 키가 외부로 노출되지 않도록 기기 처분 전 관련 서버의authorized_keys에서 해당 키를 먼저 제거해야 합니다. - 클라우드 CLI 자격 증명: AWS CLI(
~/.aws/credentials), GCP SDK, Azure CLI 로그인 세션을 해제하고 IAM Access Key를 파기합니다.
자주 묻는 질문(FAQ)
Q1. SSD에 shred 명령어로 7회 이상 덮어쓰기를 진행하면 더 안전한가요?
아니오, 안전성이 높아지지 않으며 SSD의 수명만 불필요하게 깎습니다. SSD는 컨트롤러가 웨어 레벨링을 수행하므로 소프트웨어 기반의 반복 덮어쓰기가 실제 모든 셀에 다다르지 못할 수 있습니다. SSD는 blkdiscard나 NVMe Secure Erase 명령어를 사용하는 것이 기술적으로 올바르고 안전한 방법입니다.
Q2. 현재 부팅되어 사용 중인 우분투 시스템 디스크를 shred로 지울 수 있나요?
OS가 마운트되어 실행 중인 상태에서는 부팅 드라이브 전체를 정상적으로 삭제할 수 없습니다. 우분투 설치 USB 등으로 부팅(Try Ubuntu 모드)한 후, 마운트되지 않은 상태의 대상 드라이브(/dev/sda 또는 /dev/nvme0n1)를 지정하여 명령어를 실행해야 합니다.
Q3. shred 작업 도중 프로세스가 중단되면 처음부터 다시 해야 하나요?
중단된 시점까지는 이미 난수로 덮어씌워진 상태입니다. 그러나 전체 영역의 완전 파기를 보장하기 위해서는 중단된 이후 명령어를 처음부터 다시 실행하여 끝까지 완료하는 것이 바람직합니다.
용어 설명
- Block Device (블록 장치): 리눅스에서 데이터를 고정 크기의 블록 단위로 읽고 쓰는 저장장치(HDD, SSD 등)를 의미합니다.
- FTL (Flash Translation Layer): SSD 내부 컨트롤러 소프트웨어로, 파일 시스템의 논리 주소를 SSD 플래시 메모리의 물리 주소로 변환하고 셀 마모를 균등화(Wear Leveling)합니다.
- TRIM / Discard: OS가 더 이상 사용하지 않는 블록 정보를 SSD 컨트롤러에 알려주어 미리 내부 데이터를 지울 수 있도록 돕는 기능입니다.
마무리
리눅스 CLI 환경에서 제공되는 shred, dd, blkdiscard 등의 강력한 기본 유틸리티를 적재적소에 활용하면, 별도의 유료 소프트웨어 없이도 전문적인 데이터 영구 파기가 가능합니다. 저장매체 종류(HDD vs SSD)를 정확히 구분하여 적합한 파기 기술을 적용하는 것이 안전한 보안 처리의 핵심입니다.
데이터 정리가 끝났다면 이제 가치를 확인할 차례입니다. 무료 견적 받기를 통해 처분 예정인 리눅스 PC의 매입가를 손쉽게 확인해보세요.