温馨提示×

如何恢复linux删除文件

小樊
53
2026-07-29 07:59:17
栏目: 智能运维

在 Linux 中恢复被删除的文件,能否成功取决于文件删除后是否有新数据写入。下面按常见场景给你一个实用指南。


一、立即停止写入(非常重要)

一旦发现误删文件:

# 如果是挂载的分区,尽量卸载
umount /dev/sdXn
# 或只读挂载
mount -o remount,ro /挂载点

⚠️ 不要再在该分区创建、修改、下载文件,否则数据可能被覆盖,无法恢复。


二、确认文件系统类型

df -T

常见类型:

  • ext3 / ext4(最常见)
  • xfs
  • btrfs
  • ntfs(双系统)

三、不同文件系统的恢复方法

✅ 1. ext3 / ext4(最常见)

方法一:使用 extundelete(推荐)

# 安装
sudo apt install extundelete   # Debian/Ubuntu
sudo yum install extundelete   # CentOS/RHEL

# 恢复单个文件
extundelete /dev/sdXn --restore-file 路径/文件名

# 恢复整个目录
extundelete /dev/sdXn --restore-directory 路径

# 恢复所有删除文件
extundelete /dev/sdXn --restore-all

恢复的文件会保存在当前目录的 RECOVERED_FILES/ 中。


方法二:使用 testdisk

sudo apt install testdisk
sudo testdisk

操作步骤:

  1. 选择磁盘
  2. 选择分区表类型(一般选 Intel
  3. 选择 AdvancedUndelete
  4. 找到文件后按 c 复制出来

testdisk 对误删、分区损坏都很有效


✅ 2. XFS 文件系统

XFS 原生不支持 undelete,但可尝试:

sudo apt install xfsprogs
sudo xfs_repair /dev/sdXn

⚠️ 成功率较低,建议用 testdisk 或专业工具。


✅ 3. Btrfs

sudo btrfs restore /dev/sdXn /恢复目录

如果有快照:

btrfs subvolume list /
btrfs subvolume snapshot 快照 恢复目录

✅ 4. NTFS(Windows 分区)

sudo apt install ntfs-3g
sudo ntfsundelete /dev/sdXn

或:

sudo testdisk

四、通用兜底方案(任何文件系统)

使用 photorec(按文件内容恢复)

sudo photorec

特点:

  • 不依赖文件名
  • 按文件类型(jpg、doc、zip 等)恢复
  • 适合严重误删

⚠️ 恢复出来的文件名会丢失。


五、如果文件还在“打开状态”

如果程序还在使用该文件:

lsof | grep deleted

示例:

java  1234  user  5u  REG  /data/a.log (deleted)

恢复:

cp /proc/1234/fd/5 /恢复路径/a.log

这是成功率最高的情况


六、无法恢复的常见原因

  • 删除后继续写入数据
  • SSD 已执行 TRIM
  • 文件系统损坏严重
  • 时间太久

七、建议的预防措施

  • 定期备份(rsync / tar
  • 开启 btrfs / zfs 快照
  • 使用 alias rm='rm -i'
  • 重要数据使用版本控制(git)

八、我可以帮你更精确恢复

你可以告诉我:

  1. 文件系统类型(ext4 / xfs / 其他)
  2. 删除多久了
  3. 是否是系统盘
  4. 是否还有程序在占用该文件

我可以给你一步一步的具体命令

0