TestDisk 数据恢复工具教程

TestDisk 是一款功能强大的开源数据恢复工具,专门用于恢复丢失的分区和修复无法引导的磁盘。它的配套工具 PhotoRec 则专注于恢复已删除的文件。无论是在搬瓦工 VPS 上误删了重要分区,还是在本地服务器上遇到磁盘故障,TestDisk 都是首选的紧急恢复方案。本文将从安装、分区恢复到文件恢复,全面讲解这套工具的使用方法。

一、安装 TestDisk

1.1 在 Ubuntu/Debian 上安装

apt update
apt install testdisk -y

1.2 在 CentOS/RHEL 上安装

# 需要启用 EPEL 仓库
yum install epel-release -y
yum install testdisk -y

1.3 从源码编译安装

# 安装依赖
apt install build-essential libncurses-dev libext2fs-dev libjpeg-dev zlib1g-dev -y

# 下载并编译
wget https://www.cgsecurity.org/testdisk-7.2.tar.bz2
tar -xjf testdisk-7.2.tar.bz2
cd testdisk-7.2
./configure
make
make install

二、TestDisk 恢复丢失的分区

2.1 启动 TestDisk

# 以 root 权限运行 TestDisk
testdisk

启动后 TestDisk 会询问是否创建日志文件,选择「Create」创建新的日志文件。然后选择要恢复的磁盘设备(如 /dev/sda),接着选择分区表类型(通常选择「Intel」表示 MBR,或「EFI GPT」表示 GPT)。

2.2 分析和搜索分区

在主菜单中选择「Analyse」开始分析分区结构。TestDisk 会显示当前的分区表状态。如果分区已丢失,选择「Quick Search」进行快速搜索:

  • Quick Search:快速扫描,可以找到大多数丢失的分区。
  • Deeper Search:深度扫描,耗时更长但可以找到更多分区,适合快速搜索未找到目标分区的情况。

2.3 恢复分区

搜索完成后,TestDisk 会列出找到的分区。你可以使用方向键标记每个分区的状态:

  • P(Primary):主分区
  • L(Logical):逻辑分区
  • E(Extended):扩展分区
  • D(Deleted):标记为删除(不恢复)

确认分区设置正确后,选择「Write」将分区表写入磁盘。重启系统后丢失的分区应该恢复可见。

2.4 使用命令行模式

# 直接指定磁盘设备
testdisk /dev/sda

# 指定日志文件路径
testdisk /log /var/log/testdisk.log /dev/sda

# 只读模式(不会修改磁盘)
testdisk /debug /dev/sda

三、修复启动扇区

TestDisk 可以修复损坏的引导扇区(Boot Sector),这在系统无法启动时特别有用。

3.1 检查和修复 NTFS 引导扇区

在 TestDisk 的「Advanced」菜单中,选择目标分区后选择「Boot」选项:

  • TestDisk 会对比引导扇区和备份引导扇区的差异。
  • 如果引导扇区损坏但备份完好,可以选择「Backup BS」从备份恢复。
  • 选择「Rebuild BS」可以尝试重建引导扇区。

3.2 修复 ext4 超级块

# 查看备份超级块位置
dumpe2fs /dev/sda1 | grep -i superblock

# 使用备份超级块修复文件系统
e2fsck -b 32768 /dev/sda1

四、使用 PhotoRec 恢复文件

PhotoRec 是 TestDisk 套件中的文件恢复工具,它通过识别文件头(file signature)来恢复已删除的文件,支持超过 480 种文件格式。

4.1 启动 PhotoRec

# 运行 PhotoRec
photorec

# 或者直接指定设备
photorec /dev/sda1

4.2 恢复已删除的文件

启动后按以下步骤操作:

  • 选择目标磁盘和分区。
  • 选择文件系统类型(ext2/3/4 选「ext2/ext3」,其他选「Other」)。
  • 选择搜索范围(「Free」只搜索空闲空间,「Whole」搜索整个分区)。
  • 选择恢复文件的保存目录(必须是另一个分区,不能保存到源分区)。

4.3 过滤文件类型

在 PhotoRec 中可以选择「File Opt」来指定要恢复的文件类型,避免恢复大量不需要的文件:

# 也可以使用命令行指定文件类型
photorec /d /recovery /dev/sda1 fileopt,jpg,enable,everything,disable

五、实际案例:恢复 VPS 上误删的数据

5.1 场景描述

假设你在搬瓦工 VPS 上不小心执行了 rm -rf 删除了网站目录。由于 VPS 使用虚拟磁盘,恢复方法与物理机略有不同。

5.2 紧急处理步骤

# 第一步:立即停止对磁盘的写入操作
# 停止 Web 服务器以减少磁盘写入
systemctl stop nginx
systemctl stop mysql

# 第二步:安装 TestDisk(如果尚未安装)
apt install testdisk -y

# 第三步:创建恢复目录(使用 /tmp 或其他分区)
mkdir /tmp/recovery

# 第四步:使用 PhotoRec 恢复文件
photorec /d /tmp/recovery /dev/vda1

5.3 恢复后整理文件

PhotoRec 恢复的文件会按编号命名并放入 recup_dir.1recup_dir.2 等子目录中。可以使用脚本按文件类型整理:

#!/bin/bash
# 整理 PhotoRec 恢复的文件
RECOVERY_DIR="/tmp/recovery"
SORTED_DIR="/tmp/sorted"

mkdir -p ${SORTED_DIR}/{images,documents,databases,configs,others}

find ${RECOVERY_DIR} -name "*.jpg" -o -name "*.png" -o -name "*.gif" | xargs -I {} mv {} ${SORTED_DIR}/images/
find ${RECOVERY_DIR} -name "*.pdf" -o -name "*.doc" -o -name "*.txt" | xargs -I {} mv {} ${SORTED_DIR}/documents/
find ${RECOVERY_DIR} -name "*.sql" -o -name "*.db" | xargs -I {} mv {} ${SORTED_DIR}/databases/
find ${RECOVERY_DIR} -name "*.conf" -o -name "*.cfg" -o -name "*.ini" | xargs -I {} mv {} ${SORTED_DIR}/configs/

六、使用 extundelete 恢复 ext4 文件

对于 ext3/ext4 文件系统,extundelete 可以直接按文件名恢复,比 PhotoRec 更方便:

# 安装 extundelete
apt install extundelete -y

# 恢复指定文件
extundelete /dev/sda1 --restore-file /var/www/html/index.php

# 恢复指定目录
extundelete /dev/sda1 --restore-directory /var/www/html/

# 恢复所有可恢复的文件
extundelete /dev/sda1 --restore-all

七、预防措施

# 在 .bashrc 中添加安全删除别名
alias rm='trash-put'
# 需要安装 trash-cli
apt install trash-cli -y
  • 启用文件系统快照功能(如 Btrfs 或 LVM 快照)。
  • 使用搬瓦工 KiwiVM 面板的 Snapshots 功能定期创建 VPS 快照。

总结

TestDisk 和 PhotoRec 是 Linux 系统管理员必须掌握的数据恢复工具。在紧急情况下,这些工具可以帮助你找回丢失的分区和删除的文件。当然,最好的数据保护策略永远是定期备份。如果你需要一台稳定的 VPS 用于数据备份,可以参考搬瓦工 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。