当前位置:首页>Linux>一次误删,教你完整走完 Linux 数据恢复流程(实战指南)

一次误删,教你完整走完 Linux 数据恢复流程(实战指南)

  • 2026-10-05 20:19:39
一次误删,教你完整走完 Linux 数据恢复流程(实战指南)

一次误删,教你完整走完 Linux 数据恢复流程(实战指南)

很多运维都经历过这样一个瞬间:

你在服务器上敲下了一条命令:

rm -rf *

下一秒,心跳直接停半拍。

尤其是在生产环境里,一次误删可能意味着:

  • • 数据库文件没了
  • • 用户数据没了
  • • 整个业务直接停摆

但先别慌。
只要操作正确,很多数据其实是可以救回来的。

今天这篇文章,带你完整走一遍 Linux 数据恢复的标准流程。

整套流程分为三阶段:

1️⃣ 黄金止损
2️⃣ 暴力恢复
3️⃣ 数据整理


第一阶段:黄金止损(最关键)

在做任何恢复之前,请先记住一句话:

严禁在原盘写入!严禁在原盘写入!严禁在原盘写入!

因为 Linux 删除文件,本质只是:

把文件标记为“可覆盖”。

数据其实还在磁盘上。

只要新的数据写进去,就可能:

直接覆盖你要恢复的数据。


1 立即卸载文件系统

如果误删发生在数据盘,比如:

/home
/data
/var

第一时间执行:

umount /home

这样可以立刻停止写入。


2 如果无法卸载,就改为只读

有时候分区正在使用,卸载不了。

这时可以改为 只读挂载:

mount -o remount,ro /home

这样系统仍能读取数据,但不会再写入。


3 制作“案发现场”镜像(核心步骤)

真正有经验的运维,绝不会直接在原盘做恢复。

原因很简单:

恢复工具如果出 Bug,可能会造成 二次破坏。

正确做法是:

先把整个分区做一个镜像。

例如:

dd if=/dev/sdb1 of=/backup/recovery_home.img bs=4M status=progress

参数解释:

  • • if 输入设备
  • • of 输出文件
  • • bs=4M 提高复制速度
  • • status=progress 显示进度

执行后你会得到一个文件:

recovery_home.img

这个文件就是:

磁盘的完整副本。

从现在开始:

  • • 原盘可以封存
  • • 所有恢复操作都在镜像上进行

安全系数直接提升。


第二阶段:PhotoRec 暴力搜救

很多传统恢复工具依赖:

文件系统元数据

但如果:

  • • inode 被删
  • • 分区损坏

它们就彻底失明了。

而 PhotoRec 的思路完全不同。

它的工作方式是:

扫描整个磁盘的数据流,通过文件头特征识别文件。

例如:

  • • JPG 文件头
  • • ZIP 文件头
  • • SQL 文件特征

这就像一个“数据考古学家”。

即使文件系统完全损坏,也能挖出数据。


1 安装恢复工具

PhotoRec 属于 testdisk 工具包。

CentOS / Rocky Linux:

yum install testdisk

Ubuntu / Debian:

apt install testdisk

2 开始扫描镜像

执行命令:

photorec recovery_home.img

界面虽然是命令行,但操作其实很简单。


3 交互流程

PhotoRec 会一步一步引导你操作。

第一步:选择磁盘

程序会识别:

recovery_home.img

直接选中即可。


第二步:选择分区类型

如果是 dd 下来的镜像:

选择:

Whole disk

或

No partition

第三步:选择文件系统

Linux 文件系统一般选择:

Other

也就是:

Ext2 / Ext3 / Ext4 / XFS

第四步:选择输出目录

这一点 非常重要:

恢复文件必须保存到 另一个磁盘。

千万不要写回原盘。

选择好目录后:

按 C 键确认。


4 开始扫描

接下来就是等待。

屏幕会不断滚动:

Pass 1
Reading sector
Recovered files

你会看到:

  • • 找到多少 jpg
  • • 找到多少 zip
  • • 找到多少 txt

这个过程就像:

在废墟里挖宝。


第三阶段:清洗战场(最痛苦)

扫描结束后,你会看到一堆目录:

recup_dir.1
recup_dir.2
recup_dir.3

打开后你可能会崩溃:

文件名全没了。

变成这样:

f1234567.txt
f1234568.png
f1234569.sql

别慌,这是正常现象。

因为 PhotoRec 不依赖文件系统。

它只知道:

文件内容是什么。

但不知道:

原文件名是什么。


如何找到你需要的文件?

这时候 Linux 命令行就派上用场了。


1 按关键字搜索

如果你在找配置文件:

grep -r "jdbc.url" recup_dir.*

如果你在找代码:

grep -r "select * from" recup_dir.*

2 按类型整理文件

例如整理图片:

mkdir images

find recup_dir.* -name "*.png" -exec mv {} images/ \;

整理 SQL 文件:

mkdir sql

find recup_dir.* -name "*.sql" -exec mv {} sql/ \;

虽然整理过程很痛苦。

但当你看到:

f39284.sql

这种几百 MB 的数据库文件被找回来时,

那种感觉真的像:

从鬼门关把数据抢回来。


最后的忠告

如果你经历过一次数据恢复,你就会明白一件事:

恢复只是补救,备份才是答案。

建议立刻做两件事。


1 给 rm 加一个“安全锁”

安装回收站工具:

yum install trash-cli

以后删除文件:

trash file.txt

文件会进入回收站,而不是直接消失。


2 承认一个事实

人会犯错
硬盘会坏
系统会崩

只有一件事不会背叛你:

备份。

建议至少做到:

  • • 每日备份
  • • 异地备份
  • • 自动备份

写一个简单脚本:

每天凌晨把核心数据同步到另一台服务器。

这样下次再误删时,你只需要:

淡定地恢复备份。

而不是半夜三点在机房里流冷汗。

最新文章

随机文章