欢迎光临
我们一直在努力

哭死!Linux 误删文件别慌!保姆级恢复教程,rm -rf 也能救回来

相信每个玩 Linux 的人都有过一瞬间的窒息:

手快敲成 rm -rf *、脚本写错把日志 / 代码 / 配置全删了、scp 覆盖了重要文件……尤其是做运维、后端、前端部署的同学,误删一次简直想重装系统。

但真相是:Linux 删文件≠真消失,只要没被新数据覆盖,大部分都能救回来。今天这篇就是纯干货、保姆级、一步不乱的 Linux 文件恢复教程,小白也能照抄命令。


全文思维导图

一、先看表格:你属于哪种情况?

表格

场景文件系统推荐工具难度成功率(未覆盖)
rm 刚删不久 ext4 extundelete ⭐⭐ 90%+
删了但程序还在用 任意 lsof 100%
误删目录 / 批量文件 ext3/4 testdisk ⭐⭐ 85%+
CentOS 默认 xfs xfs xfs_undelete ⭐⭐⭐ 70%~85%
分区被格 / 误删分区 任意 testdisk ⭐⭐⭐ 60%~80%

最重要一句话先放这:发现误删后,立刻停止往该分区写任何数据!不要再创建文件、复制文件、日志滚动、下载、部署…… 写入越少,恢复概率越高。


二、最简单急救:文件正在被进程使用(lsof)

适用场景:文件删了,但服务没停(比如 Nginx/MySQL/Node 进程还打开着这个文件)。成功率 100%,白捡一样。

1. 查找被删除但未释放的文件

bash

运行

lsof | grep deleted

你会看到类似:

plaintext

node 1234 user 3r REG 253,1 102400 12345678 /www/server.js (deleted)

2. 直接恢复

把进程对应的 fd 重定向回去即可:

bash

运行

cat /proc/1234/fd/3 > /www/server.js.bak

完事。这是最简单、最稳、零风险的恢复方式。


三、ext4 最强恢复:extundelete(推荐首选)

extundelete 是 ext3/ext4 专用,精准按文件名 / 目录恢复,比 testdisk 好用太多。

1. 安装

Ubuntu/Debian

bash

运行

apt update
apt install -y extundelete

CentOS/RHEL

bash

运行

yum install -y epel-release
yum install -y extundelete

2. 关键:先卸载或只读挂载(非常重要)

假设你的分区是 /dev/sdb1

bash

运行

umount /dev/sdb1

如果提示忙:

bash

运行

mount -o remount,ro /dev/sdb1

3. 恢复指定文件

bash

运行

extundelete /dev/sdb1 –restore-file path/to/your/file

示例:

bash

运行

extundelete /dev/vda1 –restore-file www/index.js

4. 恢复整个目录

bash

运行

extundelete /dev/sdb1 –restore-directory www/

5. 恢复所有被删文件

bash

运行

extundelete /dev/sdb1 –restore-all

恢复后的文件会自动放在当前目录下的 RECOVERED_FILES/ 里。


四、testdisk 万能恢复(支持误删分区)

适合:目录批量删除、分区表损坏、找不到文件、ext/xfs/ntfs 都支持。

安装

bash

运行

# Ubuntu
apt install testdisk

# CentOS
yum install testdisk

使用步骤(保姆级)

  • 运行
  • bash

    运行

    testdisk

  • 选择硬盘 → Proceed
  • 选择分区类型(一般 Intel/PC)
  • 选择 Analyse
  • 选择 Quick Search
  • 找到你要的文件 → 按 C 复制恢复
  • 选择保存位置(必须另一个盘)
  • 全程图形化,方向键选择,小白也能看懂。


    五、XFS 文件系统恢复(CentOS 常用)

    xfs 比较麻烦,没有特别完美的工具,但 xfs_undelete 依然能救。

    安装

    bash

    运行

    git clone https://github.com/ianka/xfs_undelete.git
    cd xfs_undelete
    dnf install gcc make
    make

    恢复

    bash

    运行

    ./xfs_undelete /dev/sda2 -o recovered/

    它会批量扫描可恢复文件,按文件名、大小、时间筛选即可。


    六、绝对不能做的 5 件事(救命级)

  • 不要再往该分区写文件(覆盖 = 永久消失)
  • 不要重启、不要重启、不要重启
  • 不要再次 rm、不要移动目录
  • 不要把恢复出来的文件存回原分区
  • 不要在生产环境乱试未知脚本

  • 七、从根源避免 rm -rf 悲剧(强烈建议)

    1. 给 rm 加 “回收站”

    bash

    运行

    alias rm='trash'

    配合 trash-cli,删文件 = 丢回收站,可恢复。

    2. 重要数据定时备份

    bash

    运行

    rsync -av /www /backup/

    或者用 cron 每日自动备份。

    3. 关键目录加权限保护

    bash

    运行

    chattr +i /etc/nginx/nginx.conf

    想删都删不掉。

    4. 慎用别名

    plaintext

    alias rm='rm -i'

    删前必须确认,能救 90% 的手滑。


    结语

    Linux 下误删文件真的不是世界末日,只要你不乱写覆盖,ext4 用 extundelete、进程还在就 lsof、分区问题用 testdisk,基本都能救回来。

    真正可怕的不是 rm -rf,而是删完还继续往硬盘疯狂写东西。

    这篇保姆级教程建议直接收藏,说不定哪天就能救你一晚上甚至一个项目。有用的话欢迎点赞、收藏、转发,让更多玩 Linux 的朋友少走弯路!

    赞(0)
    未经允许不得转载:171主机测评 » 哭死!Linux 误删文件别慌!保姆级恢复教程,rm -rf 也能救回来
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址