最近购买了一个平板二合一的电脑,平时出门带上用于码字,由于预算的不足,不能购买高性能的设备,只能购买了一个Intel Atom X5 z8350的寨板。在开始使用后,发现由于羸弱的性能,我平时主要的编辑器Atom不能流畅的运行。当然这不全是性能弱的锅,Atom也存在优化不足的原因,在我的i7+SSD的主力机下,当文件太大时就会有明显的卡顿。所以在平板上就不能使用Atom了,转而使用微软开发的Visual Studio Code

Atom和VScode都是基于Electron,所以他们都能有良好的社区环境,来源源不断的提供给他们优秀的插件和主题,VScode在插件数量上是少于Atom的,但是VScode作为微软的亲儿子,在优化上明显的优势,甚至好于Sublime text

刚刚使用VScode所有的功能不熟悉,我的项目maohhgg/bingWallpaper是一个自动下载Bing的每日背景并展示的项目,我当初设计存在缺陷,项目代码文件和下载目录放在了一起,所以在同步代码到Github上,只添加同步了代码文件,下载的视频和图片没有同步。 这就导致了在刚刚使用VScode的Git时,点击了全部撤销,导致了下载了半年的视频和图片付之一炬了,而Bing只提供了8天的接口,所以没办法在爬和下载之前的图片了,只好采取使用恢复软件了。

我的这个项目文件使用了定时更新(每天0:30爬Bing首页,并下载),所以项目被我放在的家里一个Linux的服务器上,而且存储下载目录的文件系统为EXT4。能较好的保存文件具体的日志信息。

使用 extundelete

我推荐使用extundelete,他能恢复文件夹和目录,恢复出来的文件还会保留下原来的文件名和目录结构。但是extundelete对磁盘恢复能力较好,但是对目录恢复较差,所以首先对目标磁盘进行完整的拷贝,我的/var使用了一个单独的分区,大小也不大,使用一个32G的U盘就可以完整的拷贝下来,这一步是及其推荐的,能完整的把事件现场保存下来。

拷贝事件现场

使用dd命令对分区进行拷贝,我手头只有一个32G的SD卡,有两个分区,拷贝到第二个分区。U盘太小了。只有8G和16G,无法完整的容下。具体事情况而定。

#dd if=/dev/var of=/dev/sdc2
安装使用 extundelete

我使用的是debian/Ubuntu平台,其他Linux使用其他方式安装。

#apt-get install extundelete

查询数据信息,一般使用–inode 2来扫描。

# extundelete /dev/sdc2 --inode 2
.....
File name                                       | Inode number | Deleted status
Directory block *:
.
..
www                                              11

出现会出现上面的情况,我的为/var目录,会出现/var目录下的文件夹,和文件夹的状态,这时已经读取了文件和文件夹的状态,
我被误删的文件在/var/www/bing/resource和/var/www/bing/images目录下,所以我们直接恢复/var/www/bing整个目录,

extundelete恢复的文件是保存在当前目录下的,确保当前目录所在磁盘有足够的空间,而且当前目录不在要恢复的分区中。

#extundelete --restore-directory /var/www/bing

到这就完成了,在当前目录下就已经有被删的文件夹和文件了。

extundelete还有其他两种模式,恢复具体的文件和恢复整个分区的被删去的文件。

#extundelete --restore-file 文件名  //恢复具体的文件
#extundelete --restore-all         //恢复全部分区下所有被删除的文件