linux删错文件,小记Linux/UNIX下错删文件恢复

一个月前,我的洁癖犯了,想执行find . -name "*~" -exec rm {} \;清下某目录下由vim生成的~文件,不料漏打了~,把一些文件删掉了...好在有用git做版本控制,即使.git/index也被删没了,但也可以通过git reset恢复,之后再用git恢复版本管理中的其他被删文件即可。不料今天二月二号,我又犯二了,被做死历史find . -name "*" -exec rm {} \;坑了一把...这次被删的还有不少特意不放在版本控制的配置文件,这次不得不做文件恢复了。

最简单的情况是被删除的文件被某个进程打开,这个时候可以通过该进程在/proc下的文件描述符来恢复。首先由lsof找到打开文件的进程,有了PID和FD之后,就可以执行以下命令恢复文件:

cp /proc//fd/

不幸的是,我删的文件并没有被打开...所以不能用这种方式了。df -T查到被删文件所在的文件系统是ext4,于是可以试试ext的文件恢复方法。

ext3/ext4文件系统的恢复可以用extundelete,例如恢复被误删的目录可以用:

extundelete /dev/ --restore-directory

恢复被误删的文件可以用:

extundelete --restore-file

此外也可以用debugfs工具,相较extundelete,debugfs适用于ext2/ext3/ext4文件系统

debugfs -w /dev/

在debugfs中用lsdel查找最近的删除操作,找到被删文件的inode:

debugfs: lsdel

接下来当然还是可以用extundelete:

extundelete --restore-inode

不过也可以用debugfs:

debugfs: dump

不少资料还提到,可以先在debugfs中用:

debugfs: logdump -i

找到以下信息

Blocks: ():

再通过dd命令恢复文件。

不过我的问题竟也无法通过extundelete或debugfs搞定,无奈只好用PhotoRec“黑科技”了...PhotoRec恢复后的文件名好乱,好在我还有ag这种大杀器,找到被删的配置文件是分分钟的事XDD

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值