一、操作数据需慎重
在实际的工作中linux数据恢复工具linux命令手册,同学们可能会将linux服务器上的文件不留神误删掉掉了。并且越是资历老的工程师越容易犯这样的错误,敲代码的速率也是够快,啪啪rm-rf一个回车,之后就是打脸时刻。新人操作文件时常常战战兢兢、反复确认,反倒不容易出错。假如你也是一个有多年工作经验的工程师,也给自己提个醒:溺毙的都是会水的。
序言
明天不留神把一个文件给删掉了红旗linux5.0,由于不想花半天时间重新写,就查找了一下Linux下恢复文件的方式。
由于是刚删不久,文件实际的数据应当还在
首先查看系统分区
Linux:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
1968417 463571 1504846 24% /
tmpfs 16384 4 16380 1% /var/lib/php5
tmpfs 16384 40 16344 1% /var/run
tmpfs 131072 4 131068 1% /tmp
ssl_service 262144 0 262144 0% /kssl/HRP/cache
使用系统自带工具debugfs进行修补打开删掉的文件所在的分区
Linux:~# debugfs
debugfs 1.37 (21-Mar-2005)
debugfs: open /dev/sda1
用ls-d查看刚才删掉的文件所在的目录假如列表中有我们要找的文件,尖括弧中是对应的inode号
debugfs: ls -d /root/rand-test
180331 (12) . 180225 (12) .. 180333 (16) assess
180334 (32) experiments <180451> (12) 4913 180358 (32) data
<180451> (20) .1.swp 180359 (68) periodtest.sh
<180337> (44) .singletest.input.swp 180451 (24) periodtest.input
180356 (828) singletest.input <180366> (32) .periodtest.input.swp
<180375> (748) .singletest.input.swp <180338> (716) periodtest.input~
查看inode的日志文件
debugfs:logdump-i
Inode180338isatgroup176,block1441809,offset128
Journalstartsatblock3434,transaction90549
FSblock1441809loggedatsequence90622,journalblock3950
…
quit退出debugfs,使用dd命令进行恢复,bs为上面得到的offsetlinux数据恢复工具,skip为上面得到的block
debugfs: quit
Linux:~/rand-test# dd if=/dev/sda1 of=/root/rand-test/periodtest.input~ bs=128 count=1 skip=1441809
1+0 records in
1+0 records out
128 bytes transferred in 0.000081 seconds (1582468 bytes/sec)
遗憾的是,我要恢复的文件早已不在了好在对于文本文件还有另一种方式,使用grep第一步同样是找到文件所在的分区之后使用grep对分区进行搜索,只要你记得文档中的个别关键字
grep -a -B 30 -A 150 'function checkInt() ' /dev/sda1 > tmp.txt
其中-a表示把分区看成文本方式(分区本身是二补码方式的),-B30-A150表示找到搜索的内容就复印上面30行和前面150行假如分区比较大可能须要一定的搜索时间,完成以后打开tmp.txt,你会发觉在一堆乱码中镶嵌着你要恢复的本文至此,大功告成。总结
使用debugfs的方式适用于所有文件,不过须要inode信息依然存在。使用grep的方式,只须要实际的block中数据还存在即可恢复,不过只适用于文本文件。
另外,切忌rm需慎重