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

来源:互联网 发布:js传值给jsp页面 编辑:程序博客网 时间:2024/06/08 06:35

在linux下有一个用着很爽的命令rm -f,意为强制删除,同样这也是个非常危险的命令(可以理解为禁咒2333)。所以我是尽量避免使用这条指令的。
而今天我在编译一个C++文件时不小心将目标文件和源文件位置颠倒,结果也造成了与rm同样的结果。于是花了很久的时间来恢复这个文件。这里把整个过程记录一下。
首先我们从道理上来分析一下为什么“彻底删除”的文件可以恢复:
当我们彻底删除一个文件时,并不是从磁盘中删除,而是将这片区域(block)标记为空闲。而如果没有对该区域重新写入,则“彻底删除”的数据不会丢失掉,并且其iNode也没有删除或改变。
我们来简单地证实一下这件事:
首先新建一个“aa”文件
新建一个aa文件
查看其iNode后删除
这里写图片描述
这里写图片描述
我们可以使用系统file system debugger函数debugfs来查看已经“彻底删除”文件的iNode。

sudo debugfsopen /dev/sda1ls -d [filepath]

第二行文件分区按照自己的分区情况来就行,不清楚的可以通过df来查看分区情况。或者df -T /home查看详细的用户所在分区的文件系统及使用情况。
好像又是扯了一堆理论上的东西。那么具体来看看

如何恢复误删文件:

我们要使用一个叫做extundelete的工具。

cd /tmpwget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar -xjvf extundelete-0.2.4.tar.bz2sudo apt-get install e2fsprogssudo apt-get install e2fslibs-devrm -f *.tar.bz2cd ex*./configuremake

安装成功后我们进入src文件夹下运行extundelete即可恢复近期删除的数据。


cd src
sudo ./extundelete /dev/sda1 --restore-file [欲恢复的文件名]
还有其他如恢复全部文件或者恢复某个文件夹,具体可以--help

那么

Windows用户如何恢复误删文件呢?

可以按照Microsoft提出的时常建立还原点,通过还原点恢复即可。另外可以试用下EasyRecovery。
吐槽:本来好多要说的,可是csdn这个编写文档的界面吧。╮(╯▽╰)╭

1 0