为什么简单重装系统无法彻底清除数据
很多朋友误以为重装操作系统就能让硬盘"恢复如新",实际上文件系统格式化只是删除了文件索引,原始数据仍保留在磁盘上。通过数据恢复工具可以轻易找回90%以上的内容,这对捐赠硬盘存在隐私泄露风险。
安全擦除的三种核心方法
1. 全盘写零法
sudo dd if=/dev/zero of=/dev/sdX bs=4M status=progress
这是最基础的低级格式化方法,/dev/sdX需替换为目标磁盘。注意此操作不可逆,务必确认设备路径。
2. 使用scrub工具
sudo apt install scrub
sudo scrub -p dod /dev/sdX
scrub实现了DoD 5220.22-M标准,通过多次覆写确保数据不可恢复。-p参数指定擦除模式,dod表示7次覆写。
3. hdparm安全擦除
sudo hdparm --user-master u --security-set-pass pass /dev/sdX
sudo hdparm --user-master u --security-erase pass /dev/sdX
需要硬盘支持ATA安全擦除指令,执行前需解除冻结状态:
sudo hdparm -I /dev/sdX | grep frozen
sudo hdparm --user-master u --security-set-pass pass /dev/sdX
sudo hdparm --user-master u --security-unlock pass /dev/sdX
验证擦除效果
使用hexdump检查磁盘首尾部分是否已清零:
sudo hexdump -C /dev/sdX | head -n 20
sudo hexdump -C /dev/sdX | tail -n 20
重新分区与文件系统创建
擦除完成后,建议使用fdisk重新分区:
sudo fdisk /dev/sdX
# 依次输入:g(创建GPT)、n(新建分区)、w(写入)
sudo mkfs.ext4 /dev/sdX1
SSD特殊处理
固态硬盘需使用blkdiscard触发TRIM:
sudo blkdiscard /dev/sdX
sudo fstrim -v /mount/point
或使用厂商工具如Intel MAS完成安全擦除。
自动化脚本示例
以下脚本整合了完整流程:
#!/bin/bash
DEVICE="/dev/sdX"
echo "[1/4] Checking device..."
lsblk -o NAME,SIZE,RO,TYPE,MOUNTPOINT | grep ${DEVICE#/dev/}
read -p "Confirm device (y/n)? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1; fi
echo -e "\n[2/4] Writing zeros..."
sudo dd if=/dev/zero of=$DEVICE bs=4M status=progress
echo "[3/4] Creating partition..."
sudo parted $DEVICE mklabel gpt
sudo parted $DEVICE mkpart primary ext4 0% 100%
echo "[4/4] Formatting..."
sudo mkfs.ext4 ${DEVICE}1
echo "Done! New filesystem created on ${DEVICE}1"