拯救rm误删的文件

即便采用了定时备份,云盘同步,甚至GIT,却还总是不及随手的一个rm来的杀伤力大。

今天又又又遇到了这个问题,rm随手把刚刚写好的一个cpp文件给删了,一瞬间脚都软了,上周写了一周的ROP,劳民伤财且洋洋洒洒几百行。

Linux下有很多文件恢复类的软件,前序操作一般是umount磁盘,再备份磁盘,最后用这些软件扫描分区,找到误删文件。

只不过现在遇到的情况有点特别,ext4格式的磁盘位于虚拟机当中,整个分区差不多200G,编译Android代码用的。光找个空闲磁盘存放这么大的分区就足够苦恼了,如果还要对这么大的磁盘进行磁盘恢复,时间肯定久到不敢想。

毕竟这个cpp我还是定期备份的,相比之前备份的版本,只是增加了几百行代码而已,现在只要能找到增加的这几行,哪怕有些错乱,理论上再调整下格式就可以了,并不需要传统的文件恢复工具重磅来访。

首先,在分区中搜索新增文字片段中的关键字,关键字要稍微长一点避免重复,比如我的例子中:

通过上面的搜索,可以很快(十分钟以内)找到目标字符串所属偏移(好几组)。

接下来只要从目标分区取回文件内容片段:

到此,基本上text.save里存着的就是你的文件内容了,毕竟fgrep时输出的偏移好几组,dd时倒是可以换几个试试,看哪个输出的结果最好。

Linux下编译WebKit和JSC

Safari和Chrome的内核都是webkit,无论是打算自己开发个浏览器还是在程序里集成完整的HTML解析功能,webkit都是为数不多的选择。特别是webkit分支中的jsc,可以命令行下解释执行javascript,真是想想就让人亢奋的玩物。编译环境选择的是Ubuntu 15.04 x86_64,由于玩心太重,所以首先考虑把jsc编译出来。

下载代码

有大概三种途径弄到代码,git,svn和直接下载tar.xz,我只试了后面两种

或者从webkitgtk直接下载tar.xz

准备编译环境

执行webkit/Tools/gtk/install-dependencies可以安装大部分缺失的库代码,另外再手动补下刀

其余的库要是还缺,apt-cache search+apt-get install 缺啥补啥吧

编译

如果下载的tar.xz的话,参考linuxfromscratch进入webkit目录执行以下代码,编译好的jsc位于./build/bin/jsc

如果是svn得到的代码,进入webkit目录后执行编译脚本得到./WebKitBuild/Release/bin/jsc

Linux下运行Flash独立播放器

Adobe很早就停止了对Linux下Flash的功能更新,和最新的Flash 18相比,Linux下的Flash仍然停留在11.2。

即便如此,Flash 11.2日常播放个简单的动画还是绰绰有余的,点击下载Flash独立播放器

直接运行绝对报错,形式类似:

官方也没详细说明,后来在64位的ubuntu 14上折腾一阵,发现安装以下的依赖库就OK了