红联Linux门户
Linux帮助

Linux(以Ubuntu16.04为例)和Windows误删文件恢复

发布时间:2017-04-13 09:50:59来源:linux网站作者:ds1231h
在Linux下有一个用着很爽的命令rm -f,意为强制删除,同样这也是个非常危险的命令。所以我是尽量避免使用这条指令的。
而今天我在编译一个C++文件时不小心将目标文件和源文件位置颠倒,结果也造成了与rm同样的结果。于是花了很久的时间来恢复这个文件。这里把整个过程记录一下。
 
首先我们从道理上来分析一下为什么“彻底删除”的文件可以恢复:
当我们彻底删除一个文件时,并不是从磁盘中删除,而是将这片区域(block)标记为空闲。而如果没有对该区域重新写入,则“彻底删除”的数据不会丢失掉,并且其iNode也没有删除或改变。
我们来简单地证实一下这件事:
首先新建一个“aa”文件
新建一个aa文件
Linux(以Ubuntu16.04为例)和Windows误删文件恢复
查看其iNode后删除
Linux(以Ubuntu16.04为例)和Windows误删文件恢复
Linux(以Ubuntu16.04为例)和Windows误删文件恢复
我们可以使用系统file system debugger函数debugfs来查看已经“彻底删除”文件的iNode。
sudo debugfs
open /dev/sda1
ls -d [filepath]
第二行文件分区按照自己的分区情况来就行,不清楚的可以通过df来查看分区情况。或者df -T /home查看详细的用户所在分区的文件系统及使用情况。
好像又是扯了一堆理论上的东西。那么具体来看看。
 
如何恢复误删文件:
我们要使用一个叫做extundelete的工具。
cd /tmp
wget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar -xjvf extundelete-0.2.4.tar.bz2
sudo apt-get install e2fsprogs
sudo apt-get install e2fslibs-dev
rm -f *.tar.bz2
cd ex*
./configure
make
安装成功后我们进入src文件夹下运行extundelete即可恢复近期删除的数据。
cd src
sudo ./extundelete /dev/sda1 --restore-file [欲恢复的文件名]
还有其他如恢复全部文件或者恢复某个文件夹,具体可以--help。
 
那么Windows用户如何恢复误删文件呢?
可以按照Microsoft提出的时常建立还原点,通过还原点恢复即可。另外可以试用下EasyRecovery。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29954.html