Linux 系统没备份误删文件能恢复吗?怎么做?
2025/11/03
黄老师

  
在 Linux 系统里没备份就删了重要文件,是不是只能自认倒霉?我身边好多用 Linux 的朋友都遇过这事儿 —— 有删了服务器配置文件的,有丢了工作文档的,一慌就乱点乱操作,最后反而把数据彻底搞没了。其实 Linux 误删文件不是绝对救不回来,关键得先搞清楚两个事儿:你用的是哪种文件系统,还有删了之后有没有再往盘里写东西。下面就跟大家掰扯掰扯能恢复的情况、具体怎么操作,还有平时怎么防着误删。
一、Linux 系统没备份误删文件,能恢复吗?看 2 个核心因素
Linux 误删文件能不能救,真不是一句话能说清的,得看 “文件系统” 和 “删后的操作” 这俩关键点,直接决定能不能救、能救回多少。 
1. 文件系统类型:决定恢复的基础可能性 
Linux 常用的文件系统就那么几种:ext3、ext4、XFS,还有不太常见的 Btrfs,每种的恢复难度差不少,恢复前得先搞明白自己用的是哪个 —— 不然工具选错了,忙活半天也是白搭。 
- ext3/ext4 文件系统:老版 Linux 比如 CentOS 7、Ubuntu 18.04,基本都是用 ext4,这玩意儿默认开日志,删文件的时候不会真把数据清空,就是在磁盘上标个 “这块地方能用了”。只要没新文件往这儿写,用工具就能找回来,成功率在这几种里最高。我之前帮同事恢复过 ext4 分区的 Excel 表格,他删了之后没敢再操作,半小时就找回来了。
 
- XFS 文件系统:现在新点的 Linux 比如 CentOS 8、RHEL 8,大多用 XFS。这东西更看重数据一致性,删了文件要是没开快照,再往盘里写点东西,恢复起来就比 ext4 麻烦。但它会留着删除日志,要是能及时把日志提出来,用专门的工具还是有机会的 —— 之前有个客户删了 nginx 配置文件,就是靠 XFS 的日志找回来的。
 
- Btrfs 文件系统:这玩意儿支持快照,要是删之前没手动或自动建快照,恢复逻辑跟 ext4 差不多,但能用的工具少,就主流的 btrfs-restore。而且对操作基础要求高,新手容易越搞越乱,我见过有人用这系统恢复文件,最后把权限全弄混了,文件找回来也打不开。
 
2. 删除后的操作:影响恢复成功率的关键 
好多人删了文件第一反应是 “赶紧找工具恢复”,结果一边找一边还在下载东西、建文档,最后工具打开一看,数据早被覆盖了。Linux 里删了文件,正确做法是 “立刻停手,别往盘里写任何东西”,为啥? 
- 磁盘里被标为 “可覆盖” 的区块,只要有新文件写进去,旧数据就没了 —— 比如你删了 /home 里的文档,又往里面下了个压缩包,那原来文档的位置很可能就被压缩包占了,再怎么找也没用。
 
- 就算是开了日志的文件系统,要是删了之后重启系统、清了磁盘缓存,日志文件可能也被改了,恢复需要的关键信息就没了。之前有个朋友删了日志文件,还顺手执行了个 yum clean all,最后日志信息全没了,只能重新做数据。
 
二、Linux 系统误删文件,具体怎么恢复?分文件系统选工具
搞清楚文件系统、停了写入操作之后,就能按情况选工具了。下面说的都是我实际用过的方法,操作前最好在测试机上练两遍,别直接在生产环境瞎搞,不然把数据搞坏了更麻烦。 
1. ext3/ext4 文件系统:用 extundelete 工具恢复 
extundelete 是专门给 ext3/ext4 用的开源工具,操作不算复杂,新手也能上手,我拿 CentOS 7 举个例子: 
- 第一步:装 extundelete
 
先确保联网,在终端输yum install -y extundelete—— 要是 Ubuntu 系统就用apt-get install extundelete。有时候会遇到 yum 找不到包的情况,别慌,先执行yum update更一下源,或者换个阿里云的源,一般就能解决。 
- 第二步:找文件所在的分区
 
得知道你删的文件在哪个分区里,比如你删的是 /home/user/test.txt,就输df -h,看 /home 挂载在哪个分区(比如 /dev/sda3),把这个路径记下来 —— 别记混了,要是选错分区,不仅恢复不了,还可能搞坏其他数据。 
- 第三步:执行恢复
 
要是只删了单个文件,比如 /test.txt,就输extundelete /dev/sda3 --restore-file /home/user/test.txt;要是删了整个文件夹,比如 /docs,就用--restore-directory参数:extundelete /dev/sda3 --restore-directory /home/user/docs。 
- 第四步:查恢复结果
 
恢复的文件会存在当前目录的 “RECOVERED_FILES” 文件夹里,进去看看文件能不能打开 —— 有时候恢复的文件可能会有损坏,比如 Excel 打开提示格式错误,这时候可以试试用修复工具修一下,大部分情况都能救回来。 
2. XFS 文件系统:借助 xfs_restore 与日志恢复 
XFS 恢复比 ext4 麻烦点,得靠文件系统日志,还得知道文件删之前挂在哪个位置,我拿 CentOS 8 举例子: 
- 第一步:查 XFS 日志和挂载信息
 
先输xfs_admin -l /dev/mapper/cl-home(这里 /dev/mapper/cl-home 是你删文件的分区),找 “Log buffer address” 对应的日志地址,记下来;再输mount | grep xfs,确认分区的挂载点(比如 /home)—— 这俩信息少一个都不行。 
- 第二步:提删除日志
 
输xfs_logprint -i /dev/mapper/cl-home > xfs_delete.log,把日志导出到 xfs_delete.log 文件里。然后打开这个日志,搜你删的文件名(比如 test.xlsx),找 “ino” 后面的数字 —— 这是文件的 inode 号,恢复的时候得用。 
- 第三步:执行恢复
 
先把这个分区卸了,输umount /home—— 要是提示 “设备忙”,说明有程序在占用这个分区,得先把相关服务停了(比如停掉 nginx、mysql)。然后输xfs_restore -i -f /dev/mapper/cl-home,进入交互模式后输 “ls” 看能恢复的文件,找到对应 inode 号的文件,输 “add 文件名” 加到恢复列表,最后输 “extract” 开始恢复,文件会存在当前目录。 
3. Btrfs 文件系统:通过 btrfs-restore 找回 
Btrfs 恢复得先找 “子卷”,操作比前两种复杂,我拿 Ubuntu 20.04 举例子,新手建议多练几遍: 
- 第一步:查 Btrfs 子卷信息
 
输btrfs subvolume list /(/ 是 Btrfs 的根挂载点),找你删文件所在的子卷 —— 比如 /home 对应的子卷 ID 是 256,记下来。 
- 第二步:执行恢复
 
输btrfs-restore -v -i /dev/sda2 /tmp/btrfs_recover,其中 /dev/sda2 是 Btrfs 分区,/tmp/btrfs_recover 是恢复后文件存的地方。进入交互模式后输 “ls” 看文件,找到要恢复的文件,输 “restore 文件名 /tmp/btrfs_recover” 就行。 
- 注意:Btrfs 恢复后经常会有权限问题,比如文件打不开,这时候得用chown改权限 —— 比如chown user:user /tmp/btrfs_recover/test.txt,把 user 换成你的用户名,一般就能解决。
 
三、怎么避免 Linux 系统误删文件?做好 3 个预防动作
恢复文件终究是 “亡羊补牢”,平时多注意,能少不少麻烦。我总结了三个简单好用的方法,不管是新手还是老手都能用。 
1. 开启自动备份:给文件上 “双保险” 
Linux 里用 crontab 就能设定时备份,不用手动操作,很方便。比如要备份 /home 目录: 
- 先建个备份脚本:输vim /root/backup_home.sh,里面写tar -zcvf /backup/home_$(date +%Y%m%d).tar.gz /home—— 这样每天备份的文件都会带日期,比如 home_20240520.tar.gz,找的时候也方便。
 
- 然后设定时执行:输crontab -e,加一行0 2 * * * /bin/bash /root/backup_home.sh—— 意思是每天凌晨 2 点自动备份,这时候服务器用的人少,不会影响正常使用。记得提前建 /backup 目录,不然备份会失败。
 
2. 用别名限制 rm 命令:降低误删概率 
rm -rf这命令太狠了,一不留神就删错,我一般会给它加个 “保险”—— 设个别名,删文件的时候让系统多问一句。 
- 输vim ~/.bashrc,在文件最后加alias rm='rm -i',保存后输source ~/.bashrc生效。
 
- 这样每次输rm test.txt,系统会问 “rm: remove regular file ‘test.txt’?”,得输 “y” 才会删,就算手滑输错命令,也有个缓冲的机会。我身边好几个同事都这么设,说救过他们好几次。
 
3. 定期检查文件系统:提前排查隐患 
有时候文件丢了不是因为误删,是文件系统坏了 —— 比如磁盘有坏道,文件索引丢了,看起来像删了,其实是找不着了。所以定期检查文件系统很重要。 
- 要是 ext4 分区,先卸了分区,输e2fsck -f /dev/sda3;要是 XFS 分区,输xfs_repair /dev/mapper/cl-home就行。
 
- 建议每个月查一次,要是发现有 “坏道”“索引错误”,赶紧用dd命令把数据备份出来 —— 别等彻底坏了再弄,到时候哭都来不及。
 
所以 Linux 没备份误删文件不用慌,先输df -h或mount看看文件系统,然后立刻停手别往盘里写东西,再按对应的工具操作 ——ext3/ext4 用 extundelete,XFS 靠日志和 xfs_restore,Btrfs 用 btrfs-restore。但更重要的是平时做好预防,自动备份、限制 rm 命令、定期查文件系统,能少走很多弯路。要是遇到分区坏了、日志丢了这种复杂情况,也可以看看 Linux 官方文档里的恢复章节,或者找有经验的人帮忙,别自己瞎折腾,越弄越糟。 
					- 
							开设课程 开班时间 在线报名OCP2025.04.26
在线报名
HCIP-AI Solution2025.04.26在线报名
HCIE-openEuler2025.05.03在线报名
RHCA-CL2602025.05.04在线报名
HCIP-Cloud2025.05.10在线报名
PGCM直通车2025.05.10在线报名
HCIA-Datacom(晚班)2025.05.19在线报名
HCIA-Sec2025.06.07在线报名
RHCA-RH4422025.06.07在线报名
PMP2025.06.10在线报名
HCIA-Datacom2025.06.14在线报名
HCIE-AI Solution2025.06.14在线报名
HCIE-Datacom2025.06.14在线报名
HCIP-Datacom(晚班)2025.06.16在线报名
OCM2025.06.21在线报名
HCIE-Cloud2025.06.21在线报名
HCIP-Sec2025.06.21在线报名
HCIE-Bigdata2025.06.28在线报名
RHCE2025.06.28在线报名
HCIE-Datacom考前辅导2025.07.05在线报名
HCIP-Datacom深圳2025.07.19在线报名
CISP2025.07.19在线报名
HCIA-Datacom(晚班)2025.07.21在线报名
RHCA-RH4362025.07.26在线报名
OCP2025.07.26在线报名
HCIE-Sec2025.08.09在线报名
HCIA-AI Solution2025.08.16在线报名
HCIP-Datacom(晚班)2025.08.25在线报名
RHCA-RH3582025.09.06在线报名
PMP2025.09.16在线报名
HCIE-Datacom2025.09.06在线报名
HCIA-AI Solution2025.09.27在线报名
HCIA-Datacom2025.09.27在线报名
PGCM直通车2025.10.11在线报名
RHCA-DO3742025.10.11在线报名
HCIA-Sec2025.10.11在线报名
RHCE2025.10.18在线报名
HCIP-Datacom2025.11.08在线报名
HCIP-Sec2025.11.08在线报名
RHCA-CL2602025.11.15在线报名
OCP2025.11.15在线报名
HCIE-Sec2025.12.13在线报名
HCIE-Datacom2026.01.10在线报名
 
在线精品
					课程商城
					
									 华为HCIE-AI Solution认证课程 | 人工智能培训
									60课时
									
									 华为云计算全栈认证直通车 Cloud Computing HCIA-HCIP-HCIE
									168课时
									
									 华为认证安全Security HCIA-HCIP-HCIE(直通车)
									264课时
									
									 华为数通认证HCIA-HCIP-HCIE直通车|Datacom网络工程师培训
									258课时