热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谁说误删Ext3下的文件一定找不回

谁说误删Ext3下的文件一定找不回--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
原文出处:http://blog.cn-ic.org/?p=38

说来欠这篇文章有点时间了。事情发生在大概就在9/23吧(查看恢复文件的时间戳推算的),现在算算都一个多月过去了。我虽然不是干程序员的活,但也喜欢用PHP写一些东西给我的工作带来一些便利,因为那可以算是我用的比较熟练的语言。那是一个中午,经过近两周零零碎碎的更新,这个小系统的一个较大的功能改进算是基本完成了。于是准备备份一个版本。不知道是饿了,还是晕了,我居然敲了这个命令:

rm *.php

查了一下,这两周以来居然没有任何版本的备份。连忙拔下电源插座,以防任何数据写入该区域,那可就万劫不复了。

拆下硬盘,请公司IT部的朋友帮忙恢复。他在windows下用一些忙活了半天,结果是能恢复一些文件,但是没有一个是我要的。更气人的是,那些软件大都有按文件后缀名查询恢复的功能,但是没有一个支持php为后缀的,包括大名鼎鼎的easyrecover。

既然别人帮不上忙,那只能靠自己了。一阵google之后得出两个结论:

1.中文的内容都告诉我,ext2可以恢复,其他没戏。各个技术网站都重复转载着同一篇操作复杂的技术文章。各技术论坛里面关于数据恢复主题的更弥漫着一种悲观的气氛,通常都有这样的回复:“楼主节哀”,并且从技术角度告诉我种种不可恢复的理由。

2.英文内容好些,有一些专用的恢复软件,号称可以恢复ext3文件系统的文件,尝试了各种Demo版软件(大都可查找,不可恢复),找都找不到。我想那些软件也许对ext2有效,而对ext3可能只是一个营销手段吧。

就在我正打算重写这两个星期以来的代码的时候。在一个英文论坛的帖子里面找到了通往我的救星的一个链接

他在这里:http://www.csummers.org/index.ph ... nux-ext3-partition/

他的开头是这么写的
Every once in a while I do something really, really stupid. Like, say, for instance, delete a whole directory of very important code that I’m working on and my last backup is a couple of weeks old (because of a server move and my failure to re-setup my cron backup). How did this happen? Well, for one, I was coding at about 5:30 a.m. before my caffeine had set in, and, secondly, I was rm -rf’ing with tab-completion. Almost instantly after I pressed Enter I realized what I had done. Tragedy. Or so I thought…

TNND,这不是在说我吗?文章的内容就不一一翻译了,他的思想方法其实很简单:用string命令把欲恢复的分区里的所有ASCII字符dump成一个巨大的txt文件。然后在这个文件里面找你要的东西吧。下面说说我按图索骥做成的成功案例,以及其中的心得:

1. 将硬盘装到另外一台装有Linux的电脑上,将欲恢复的系统已只读方式mout上来。只读的目的是为了方式误写入造成的数据永久丢失。

命令格式如下:
#mount -t ext3 -o ro /dev/hdbx /mnt
其中x根据实际需要改变。

2.用string命令dump吧。
#strings /dev/sda7 > /path/to/big_text_file
最好找一个大点的分区,因为你不知道那个文件会有多大。我当时的文件是2GB。

另外提一下各文件系统对最大单文件大小的限制:
FAT32:4GB
NTFS:64GB
NTFS5.0:2TB
EXT2/EXT3/ReiserFS:1TB
JFS:不限

3.用合适的文本编辑器找吧。当然我也没有这么牛的机器能打开一个2GB的文本文件,公司分配的只是一台256MB内存的破电脑,还要分一些当显存用。于是把它分割成了20个每个100MB的文件。关闭X以及各种服务,用emacs打开,按关键字查询。用了将近3个小时,居然被我悉数找回。

emacs是NB的,100MB的文件居然在10s内打开,而且关键字搜寻也很快,只是在它自动保存的时候需要1~2min时间不能动。我开始的时候在windows下用轻便的editpus,结果那个时候一点都不轻便,没有一个动作能在2mins内做完的,打开一个文件更是需要5~6mins。

另外还有一些问题:
a.)一些以前保存过的老版本以文件碎片的形式干扰你的查找

b.)如果以”{”或者”}”作为单独一行,那么dump的时候会丢失。所以找回来的文件需要添加一些花括号,这也是挺郁闷的,但总比重新写好吧。

当然这种方法作用有限,只能恢复ASCII字符,对二进制文件无效,而且我也没有在里面找到中文字符。但是总得来讲对重要文件多家备份,防止误删才是应道理。所谓预防第一嘛。所以真希望这篇文章没有人需要。
推荐阅读
  • mysql和php的关系理解(php技术和mysql怎么结合)
    本文目录一览:1、apachephpmysql他们是什么关系 ... [详细]
  • ANSI
    ANSI是什么编码?用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • 本文介绍了在Linux中执行.sh脚本时出现/bin/sh^M: bad interpreter: No such file or directory异常的原因分析,并提供了两种解决方法:在Windows下进行编码格式转换,或在Linux中修改文件格式和执行权限。具体操作步骤也在摘要中给出。 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
author-avatar
aa杨钦佳_170
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有