温馨提示×

怎样恢复Linux回收文件

小樊
49
2026-08-17 19:56:25
栏目: 智能运维

在 Linux 中,并没有像 Windows 那样的“回收站”机制(除非你使用的是桌面环境,如 GNOME、KDE 等)。因此,恢复文件的方法取决于文件是如何被删除的以及当前系统状态。下面按常见情况说明:


一、如果是桌面环境(GNOME / KDE)删除的文件

1️⃣ GNOME(Ubuntu 默认桌面)

删除的文件通常在:

~/.local/share/Trash/

结构如下:

~/.local/share/Trash/
├── files/      # 被删除的文件
└── info/       # 删除信息(原路径、时间)

恢复方法

cd ~/.local/share/Trash/files
cp 文件名 原路径

例如:

cp test.txt ~/Documents/

2️⃣ KDE(Dolphin)

回收站在:

~/.local/share/Trash/

恢复方式类似。


二、如果是命令行 rm 删除的文件(重点)

⚠️ rm 删除后不会进回收站,直接释放 inode

✅ 能否恢复取决于:

  1. 文件删除后 磁盘是否被写入
  2. 文件系统类型(ext4 / xfs / btrfs)
  3. 是否立即停机或卸载分区

三、使用恢复工具(针对 ext 文件系统)

1️⃣ extundelete(推荐,ext3/ext4)

安装

sudo apt install extundelete   # Ubuntu / Debian
sudo yum install extundelete   # CentOS

卸载分区(非常重要)

sudo umount /dev/sdXn

或进入单用户模式 / 使用 Live CD

恢复单个文件

sudo extundelete /dev/sdXn --restore-file 路径/文件名

恢复整个目录

sudo extundelete /dev/sdXn --restore-directory 路径

恢复全部

sudo extundelete /dev/sdXn --restore-all

恢复文件会放在当前目录的 RECOVERED_FILES/


2️⃣ TestDisk(通用,支持多种文件系统)

安装

sudo apt install testdisk

运行

sudo testdisk

步骤:

  1. 选择磁盘
  2. 选择分区表类型
  3. 进入 Advanced → Undelete
  4. 选择文件并恢复

✅ 优点:支持 ext / NTFS / FAT


3️⃣ PhotoRec(按文件签名恢复)

适合:

  • 文件名不重要
  • 恢复图片、文档、压缩包等
sudo photorec

⚠️ 缺点:文件名会丢失


四、如果是 LVM / 快照

✅ 如果有 LVM 快照

lvconvert --merge /dev/vg/lv-snapshot

✅ 如果是虚拟机快照

直接回滚快照即可。


五、最佳止损建议(非常重要)

发现误删后立即:

  1. 停止写入磁盘
  2. 卸载分区或关机
  3. 使用 Live USB 操作
  4. 不要再次 rm / cp / mv

六、预防建议(以后不再踩坑)

✅ 1️⃣ 使用“回收站命令行工具”

sudo apt install trash-cli

使用方式:

trash 文件
trash-restore

✅ 2️⃣ 给 rm 加保险

alias rm='rm -i'

七、总结速查表

场景 是否可恢复 方法
桌面环境删除 ✅ 很简单 Trash 目录
rm 删除 ⚠️ 有条件 extundelete
文件刚删 ✅ 较高 立即卸载
已写入大量数据 ❌ 很难 成功率低
有快照 ✅ 完美 回滚

如果你愿意,可以告诉我:

  • 文件系统类型(ext4 / xfs / btrfs
  • 删除方式(rm / 桌面删除)
  • 是否已重启或写入数据

我可以给你最精确的恢复方案

0