Linux 数据恢复:7 款开源工具从误删文件到分区修复一篇讲透
【免费下载链接】Awesome-Linux-Software🐧 A list of awesome Linux softwares项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Linux-Software
rm -rf 敲下去的那三秒钟,终端没有任何确认提示,目录就没了。
这篇文章围绕 Linux 数据恢复展开:7 款开源工具逐个拆解、一次完整的误删找回流程、一张选型速查表。看完你就知道,下次数据出问题该用哪把钥匙、先做哪个动作。
先定位故障类型,再决定用哪把钥匙 🔑
数据丢法不同,开的药方也不同。下面这张表可以当 Linux 数据恢复的分诊单用:
| 故障场景 | 工具类别 | 第一优先级操作 |
|---|---|---|
| rm 误删,文件/目录没了 | 文件雕刻类 | 停掉该分区写入,只读重挂载 |
| 分区表损坏,磁盘认不出来 | 分区修复类 | 先深读扫描,千万别重建分区表 |
| 文件系统挂不上,日志损坏 | 救援系统 | Live U 盘启动,先 fsck 再碰数据 |
| 系统起不来,盘还活着 | 救援系统 | 进 Live 环境,先整盘做镜像 |
如果分区表已经丢了,后面要走的就是完整的分区修复指南:扫描、人工确认、最后才允许写入重建,顺序不能乱。
不管落在哪一行,第一条铁律都一样:先停写入。哪怕只是"看一眼",文件系统的日志和元数据都可能落盘,覆盖掉你正要救的扇区。停写入不是可选项,是所有后续动作的前提。
开源数据恢复工具逐个拆解 🛠️
这 7 款工具的分工差别很大:前两款负责"把已经丢的找回来",中间两款负责"系统死透了怎么进场",后三款负责"别让它再丢"。缺哪个,去仓库里的 README.md 按类别翻目录。
PhotoRec:按文件签名"刨"数据
PhotoRec 干的是文件级恢复:它不看文件系统的目录结构,直接按文件头签名扫盘。所以"文件系统索引没了"的局面它照样干活,但文件名和目录结构它救不回来,这点要有心理预期。
能干的活:
- 按文件头签名识别 300 多种格式:图片、视频、文档、压缩包
- 不依赖文件系统,格式化、删分区之后也能扫
- 可以指定整盘、分区或 LBA 区间,控制扫描范围
- 带 GUI 版本 qphotorec,给不爱敲命令的人
什么时候掏出来:rm 完或者格式化完,你要的是文件内容,文件名变成 f1234567.txt 也能接受。
TestDisk:分区表和引导扇区的手术刀
TestDisk 处理的是盘级问题:分区表损坏、分区丢失、盘起不了引导。它负责让盘重新被系统认出来,不直接恢复文件内容——文件那层是姊妹工具 PhotoRec 的事,两个装在一起,一个管"盘认不认得",一个管"文件在不在"。
硬实力:
- 扫描并重建丢失的分区表
- 修复引导扇区,把起不来的盘活过来
- 支持 ext4、NTFS、HFS+ 等常见文件系统
- 写入前会逐项让你确认扫描结果
什么局面用它:盘容量突然变小、分区凭空消失、机器卡在引导——先开 TestDisk 扫描。
Timeshift:系统级的"撤销键"
Timeshift 做整机快照,属于预防型工具:它不救已经丢的数据,但能保证你更新改崩之后,系统能退回上一版。和文件备份工具不是一回事,定位先分清楚。
关键能力:
- rsync 加硬链接做增量快照,重复内容不占双倍空间
- btrfs 文件系统上直接调用原生快照,速度更快
- 定时快照、多级保留策略都能配
- 系统彻底死机时,从 Live CD/USB 里执行回滚
什么局面用它:一次更新或者改完配置之后桌面起不来,退回到上周的快照。
SystemRescueCD:随身急救箱
SystemRescueCD 是个可启动的救援系统:烧进 U 盘,系统死机时从它启动,直接拿到一个装好恢复工具的完整命令行环境。它不是某一件工具,而是一间"手术室"。
自带装备:
- U 盘启动,带全套磁盘和文件系统工具
- 预装 TestDisk、PhotoRec 等恢复工具
- 硬件检测:内存、磁盘健康都能查
- 有网络支持,能挂载远端存储
什么局面用它:本机彻底死机、连 SSH 都连不上,这时候才轮到 U 盘出场。
BorgBackup:去重压缩的增量备份
BorgBackup 是备份工具,不是恢复工具——它不从坏盘里刨数据,但它是"别先丢"阵营里最常被拿出来打头阵的。
长项:
- 去重加压缩,反复备份只存差异部分
- 客户端加密,备份盘被偷也不怕
- 增量模式,一次全量之后每次只推变化
- 支持 SSH、SFTP、NFS 等远端仓库
怕看命令行的,用图形客户端 Vorta 配 BorgBackup,点几下就能跑起来。
什么局面用它:关键目录每晚增量备到 NAS 或者一台远端机器。
Duplicity:把加密 tar 卷推到远端
Duplicity 生成 GPG 加密的 tar 格式增量备份,推到远端或本地文件服务器。它是"敏感数据要离开本机"时的首选。
上手要点:
- 全量加增量,备份产物是加密 tar 卷
- 远端或本地路径都能当目标
- 支持 SFTP、FTP、WebDAV 等协议
- 纯命令行,适合包进 cron 定时跑
什么局面用它:几个敏感目录必须带加密出机、落到远端服务器上。
Deja Dup:新手的第一件备份工具
Deja Dup 是带内置加密的图形备份工具,底层就是 Duplicity。它不给你选协议、配加密这种高阶选项,代价是配置错误的可能性接近于零。
图形界面里能干的:
- 选要备什么、备到哪,点几下完成
- 自动加密、自动定时
- 恢复时点一下,不用碰命令行
- 本地磁盘和远端位置都支持
什么局面用它:个人文档日常备份,目标就是"重装系统不心疼"。
Linux 误删文件找回:一次 rm -rf 完整走查 🧭
假设~/projects被 rm -rf 干掉了,它住在 /dev/sdb1 上。整个 Linux 数据恢复里最常见的剧本,四步走完。
第一步,停写入。
sudo umount /dev/sdb1 sudo mount -o remount,ro /dev/sdb1为什么这么做:任何一次新写入都可能盖住正要救的扇区,只读挂载是标准动作,卸载不了就先转只读。
第二步,装工具并启动。
sudo apt install testdisk sudo photorec为什么这么做:文件系统的目录索引已经没了,只有按签名雕刻能碰到数据,PhotoRec 正好干这个。
第三步,走向导。选源盘 sdb1,文件系统类型选 "Other"(全签名扫描最稳),输出目录指到另一块盘,比如 /dev/sdc 下的一个目录。为什么这么做:恢复目标盘绝不能是源分区,否则等于自己盖掉案发现场。
第四步,验证和整理。
ls -lh ~/recovered/ file ~/recovered/filer/ | head为什么这么做:雕刻只还你文件内容,文件名是一串编号,靠类型和大小自己认领关键文件。
选型速查 📋
| 工具 | 界面形式 | 上手难度 | 最典型用途 |
|---|---|---|---|
| PhotoRec | 命令行(另有 GUI) | 低 | 格式化、误删后的文件级找回 |
| TestDisk | 命令行 | 中 | 分区表与引导扇区重建 |
| Timeshift | GUI 为主 | 低 | 系统更新改崩后的回滚 |
| SystemRescueCD | Live 命令行 | 中 | 本机死机,从 U 盘进场 |
| BorgBackup | 命令行(Vorta 可作 GUI) | 中 | 每日去重增量备份 |
| Duplicity | 命令行 | 中 | 加密 tar 卷推到远端 |
| Deja Dup | 纯 GUI | 低 | 个人文件日常备份 |
- 新手:Deja Dup 管个人文件,Timeshift 管系统,先把这两件事配起来再说。
- 进阶:PhotoRec 和 TestDisk 各备一把,文件级的、分区级的分别有主,别混着选。
- 管理员:BorgBackup 打主力、Duplicity 做异地,SystemRescueCD 常驻 U 盘,每月做一次还原演练。
几个容易翻车的点 ⚠️
- 先停写入,没有例外。"看一眼应该没事"的直觉救不了你,文件系统的日志写入不会等你想清楚。
- 恢复目标盘 ≠ 源盘。把救出来的文件写回原分区的那一刻,这次恢复就作废了,输出永远指向另一块物理盘。
- 备份没验证 = 没备份。从来没还原演练过的备份,真到要用那天多半是坏的,每月抽一个备份还原一次。
- 大文件雕刻是概率活。几个 GB 的大文件在盘上散成碎片,PhotoRec 拼回来的是听天由命,关键数据宁可先整盘镜像再慢慢来。
- 别先重建分区表。在磁盘管理工具里手快点"新建分区",旧分区表当场被抹掉,扫描窗口说没就没了。
让数据少出事的日常习惯 🌿
- 给 Timeshift 设一个每日定时快照,更新改崩了能一键回滚。
- 关键目录每晚跑一次 BorgBackup 增量备份,每月还原演练一次。
- 把 trash-cli 配进 shell,让 rm 先进回收站,误删多一次反悔机会。
- U 盘里常驻一份 SystemRescueCD 镜像,下次系统死机不用临时找工具。
今晚就干两件事:给 Timeshift 配一个每日快照,把关键目录丢进 BorgBackup 的第一个备份里。再花十分钟,把 SystemRescueCD 写进 U 盘。等下次 rm -rf 真的发生时,你桌上已经有现成的钥匙。
【免费下载链接】Awesome-Linux-Software🐧 A list of awesome Linux softwares项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Linux-Software
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考