在 Linux 中恢复被删除的文件,能否成功取决于文件删除后是否有新数据写入。下面按常见场景给你一个实用指南。
一旦发现误删文件:
# 如果是挂载的分区,尽量卸载
umount /dev/sdXn
# 或只读挂载
mount -o remount,ro /挂载点
⚠️ 不要再在该分区创建、修改、下载文件,否则数据可能被覆盖,无法恢复。
df -T
常见类型:
ext3 / ext4(最常见)xfsbtrfsntfs(双系统)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/ 中。
testdisksudo apt install testdisk
sudo testdisk
操作步骤:
Intel)Advanced → Undeletec 复制出来✅ testdisk 对误删、分区损坏都很有效
XFS 原生不支持 undelete,但可尝试:
sudo apt install xfsprogs
sudo xfs_repair /dev/sdXn
⚠️ 成功率较低,建议用 testdisk 或专业工具。
sudo btrfs restore /dev/sdXn /恢复目录
如果有快照:
btrfs subvolume list /
btrfs subvolume snapshot 快照 恢复目录
sudo apt install ntfs-3g
sudo ntfsundelete /dev/sdXn
或:
sudo testdisk
photorec(按文件内容恢复)sudo photorec
特点:
⚠️ 恢复出来的文件名会丢失。
如果程序还在使用该文件:
lsof | grep deleted
示例:
java 1234 user 5u REG /data/a.log (deleted)
恢复:
cp /proc/1234/fd/5 /恢复路径/a.log
✅ 这是成功率最高的情况
rsync / tar)btrfs / zfs 快照alias rm='rm -i'你可以告诉我:
我可以给你一步一步的具体命令。