原创

【真实记录】rm误删分区恢复复盘

温馨提示:
本文最后更新于 2026年04月02日,已超过 62 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

ssd1对应dev/nvme0n1p4 ,ssd2对应/dev/nvme0n1p5 ,hhd对应/dev/sda1,因调整挂载位置,使用rm误删了3个分区的所有数据,恢复过程操作复盘。

弄清楚文件类型:

  • SSD1: /dev/nvme0n1p4 (NTFS)
  • SSD2: /dev/nvme0n1p5 (NTFS)
  • HDD: /dev/sda1 (NTFS)
    查看文件类型的命令:
    # 根据分区名查询
    lsblk -f /dev/sda1
    或
    blkid /dev/sda1
    

检查并卸载分区

mount | grep nvme0n1p5
fuser -mv /dev/nvme0n1p5   # 查看占用该设备的进程

# 卸载分区
sudo umount /dev/nvme0n1p5

按分区逐个恢复

ntfsundelete 快速恢复(保留文件名)

对于两个 NTFS 分区(SSD1 和 SSD2):

 # 1. 先创建恢复目录(选择另一个有足够空间的分区)
 mkdir -p /home/laizhw/recovery_ssd1
 mkdir -p /home/laizhw/recovery_ssd2
 mkdir -p /home/laizhw/recovery_hdd

 # 查看有没有要恢复的文件
 sudo ntfsundelete /dev/nvme0n1p5 -s
 # 如果文件太多,可以只看前50行
 sudo ntfsundelete /dev/nvme0n1p5 -s | head -50
 # 或者保存到文件慢慢查看
 sudo ntfsundelete /dev/nvme0n1p5 -s > /home/laizhw/ssd2_scan_result.txt

 # 按文件类型恢复(视频和图片)

# 在未挂载状态下运行 ntfsundelete
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.mp4" -u -d /home/laizhw/recovery_ssd1
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.jpg" -u -d /home/laizhw/recovery_ssd1
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.png" -u -d /home/laizhw/recovery_ssd1
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.pdf" -u -d /home/laizhw/recovery_ssd1

 sudo ntfsundelete /dev/nvme0n1p5 -m "*.mp4" -u -d /home/laizhw/recovery_ssd2
 sudo ntfsundelete /dev/nvme0n1p5 -m "*.jpg" -u -d /home/laizhw/recovery_ssd2
 sudo ntfsundelete /dev/nvme0n1p5 -m "*.png" -u -d /home/laizhw/recovery_ssd2
 sudo ntfsundelete /dev/nvme0n1p5 -m "*.pdf" -u -d /home/laizhw/recovery_ssd2

补充说明:使用 -m 参数筛选特定文件类型:

 # 例如只恢复文档和图片
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.doc" -u -d /recovery/docs
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.jpg" -u -d /recovery/images
 sudo ntfsundelete /dev/nvme0n1p4 -m "*.png" -u -d /recovery/images

处理 HDD (sda1)

# 先确认 HDD 的文件系统类型(HDFS)
blkid /dev/sda1

# 使用 -f 或 --force 参数强制操作
sudo ntfsundelete /dev/sda1 -m "*.jpg" -u -d /home/laizhw/recovery_hdd -f
sudo ntfsundelete /dev/sda1 -m "*.mp4" -u -d /home/laizhw/recovery_hdd -f

完整的三个分区修复方案

  1. SSD1 (/dev/nvme0n1p4) - NTFS

    mkdir -p /home/laizhw/recovery_ssd1
    sudo ntfsundelete /dev/nvme0n1p4 -m "*.jpg" -u -d /home/laizhw/recovery_ssd1 -f
    
  2. SSD2 (/dev/nvme0n1p5) - NTFS

    mkdir -p /home/laizhw/recovery_ssd2
    sudo ntfsundelete /dev/nvme0n1p5 -m "*.jpg" -u -d /home/laizhw/recovery_ssd2 -f
    
  3. HDD (/dev/sda1) - NTFS(先修复)

     # 先创建恢复目录
     mkdir -p /home/laizhw/recovery_hdd
    
     # 修复 NTFS 日志
     sudo ntfsfix /dev/sda1
    
     # 然后恢复
     sudo ntfsundelete /dev/sda1 -m "*.jpg" -u -d /home/laizhw/recovery_hdd
    

批量恢复多种文件类型脚本(带 force 选项)

cat > /tmp/recover_all.sh << 'EOF'
#!/bin/bash

# 定义设备和恢复目录
declare -A devices=(
 ["ssd1"]="/dev/nvme0n1p4"
 ["ssd2"]="/dev/nvme0n1p5"
 ["hdd"]="/dev/sda1"
)

# 定义要恢复的文件类型
file_types=("*.jpg" "*.jpeg" "*.png" "*.gif" "*.bmp" "*.mp4" "*.avi" "*.mkv" "*.pdf" "*.doc" "*.docx" "*.xls" "*.xlsx" "*.txt" "*.zip" "*.rar")

# 对每个设备进行恢复
for name in "${!devices[@]}"; do
 device="${devices[$name]}"
 dest="/home/laizhw/recovery_${name}"

 echo "========================================="
 echo "开始恢复 $name ($device)"
 echo "========================================="

 # 创建恢复目录
 mkdir -p "$dest"

 # 如果是 HDD,先执行 ntfsfix
 if [ "$name" == "hdd" ]; then
 echo "修复 HDD NTFS 日志..."
 sudo ntfsfix "$device"
 fi

 # 恢复各种文件类型
 for ext in "${file_types[@]}"; do
 echo "恢复 $ext 文件..."
 sudo ntfsundelete "$device" -m "$ext" -u -d "$dest" -f 2>/dev/null
 done

 echo "完成!文件保存在: $dest"
 echo ""
done

echo "所有分区恢复完成!"
EOF

chmod +x /tmp/recover_all.sh
sudo /tmp/recover_all.sh

恢复的文件都有个锁的标记处理方案

# 修改所有恢复文件的所有权和权限
sudo chown -R $USER:$USER /home/laizhw/recovery_*
sudo chmod -R 755 /home/laizhw/recovery_*

重新挂载分区

编辑 fstab 文件

sudo nano /etc/fstab

获取UUID

sudo blkid 分区名

在文件末尾添加以下配置(假设你已获取到 p5 的 UUID):

# 机械硬盘(已经正确挂载)
UUID=E84CFAE177CDE089 /disk/hhd ntfs-3g defaults,locale=zh_CN.UTF-8,uid=1000,gid=1000,umask=022,noatime 0 2

# NVMe SSD 分区4(410.6G)
UUID=4A1E23F86218B41D /disk/ssd1 ntfs-3g defaults,locale=zh_CN.UTF-8,uid=1000,gid=1000,umask=022,noatime 0 2

# NVMe SSD 分区5(413G)- 替换为实际的UUID
UUID=实际UUID /disk/ssd2 ntfs-3g defaults,locale=zh_CN.UTF-8,uid=1000,gid=1000,umask=022,noatime 0 2
# 手动挂载到指定位置
sudo mount /dev/nvme0n1p4 /disk/ssd1
sudo mount /dev/nvme0n1p5 /disk/ssd2

# 查看挂载结果
df -h | grep "/disk"

如果遇到 "NTFS is inconsistent" 或类似错误:

# 在 Linux 中修复 NTFS
sudo ntfsfix /dev/sda1
正文到此结束
本文目录