linux ext2 文件系统恢复被删除的文件

linux   ext2   文件系统恢复被删除的文件   
    
  发布日期:2002-08-08   
  文章内容:   
  ------------------------------------------------------------------------   
  --------   
  by   [email protected]   
  http://www.nsfocus.com   
    
  来源于一次紧急响应,客户通过foxmail收取了qmail   邮件服务器上的100多封邮件   
  后删除了,   
  但是发现这些邮件很重要,求助我们在邮件服务器上进行恢复。   
    
  由于是远程数据恢复,只能通过网络进行,不可能做到像传统数据恢复那样卸下硬   
  盘,先全盘   
  拷贝备份(实际工作中,几乎没有这样的条件),再mount成只读进行恢复等等步   
    
    
  骤。只能根据现有的条件进行。   
  分区状况不是很好,只是把把硬盘分为了/boot     /两个分区,邮件系统在   
  /var/qmail下,实际   
  上也在/分区   
    
  距离被删除已经2-3个小时,邮件系统又一直在工作,删除以后想要100%恢复这些   
  邮件,除非上   
  帝保佑。我也只能尽尽人道。   
    
  首先把邮件系统停止,主要是他们的smtp服务(主要是那些可能写盘的内容),然   
  后选择工具进行恢复   
  目前有如下工具可以在linux下使用进行文件恢复   
  http://www.fish.com/tct/   
  可以在多种unix操作系统的不同文件分区类型上进行恢复(当然效果并不一样),   
  包括ufs,ffs,ex2等。   
  功能最强大,体积也最庞大,操作也最麻烦。   
    
    
  http://recover.sourceforge.net/linux/recover/   
  功能单一,使用比较方便   
    
    
    
  http://e2undel.sourceforge.net   
  http://unc.dl.sourceforge.net/sourceforge/e2undel/e2undel-0.8.tgz   
    
  有一个可作一定操作选择的交互界面,这个工具需要安装一个e2undel的运行库,   
  如果   
  需要恢复的文件在/usr所在地分区上,最好不用,免得安装它以后进一步破坏了待   
  恢复的   
  文件(当然可以把运行库它安装到其他文件系统,但是根据它的安装要求,还比较   
  麻烦)。   
    
  unrm   
  http://packetstormsecurity.com/UNIX/utilities/unrm-0.92.tar.gz   
  一个小工具,实际上使用了linux下的debugfs命令,简化了手工使用debugfs的步   
  骤,   
  没有什么交互的界面,恢复的文件直接放倒一个固定目录下面   
    
    
  根据这一次的情况,那些体积庞大,需要安装的工具不在选择范围。我使用了   
  unrm,为了   
  不破坏数据盘内容,我把这个小工具放倒/boot区展开.假设我们需要恢复的是   
  aaa   
  这个用户的邮件   
  这个用户的邮件   
    
  修改一下这个脚本中mount的路径(原来是/usr/sbin/mount   ,这个系统是   
  /usr/bin)   
  看看/所在地分区设备为   /dev/sda2   
    
  ./unrm   /dev/sda2   -u   qmail   -s   aaa   
    
  恢复用户qmail被删除的文件,文件中有aaa这个字符串。   
  实际发现这个-s参数没有作用   
    
  使用./unrm   /dev/sda2   -u   qmail   后,自动在当前目录下生了一个unrm.recover的   
  目录   
  各个被恢复的文件以unrm.xxxxxx   方式存放在里面   
  经过过滤   
  grep   aaa   *   |   cut   -d   :   -f   1   |   uniq   
  找到这些文件名,然后cp到原来的qmail邮件用目录中(Maildir/new)   
  这次的结果是恢复了35个文件,但是有4个已经基本被破坏了,完整恢复的只有31   
  个   
  试着收取邮件,一切正常。   
    
  从这次恢复工作来看,在linux的ex2文件系统下恢复,比以前在solairs下恢复   
  ufs系统要   
  使用./unrm   /dev/sda2   -u   qmail   后,自动在当前目录下生了一个unrm.recover的   
  方便很多,主要ufs在删除以后,各个文件区块都没有链接关系,而ex2有点类似与   
    
  fat系统,小文件只是丢失了第一个区块的inode号,后面的区块还是有链接关系的   
    
  ,大的文件好像在一定数目的区块后,才没有链接关系。   
  在ufs下恢复文件,可能还是tct相对效果要好一些。   
  欢迎访问我们的站点http://www.nsfocus.com/   
  绿盟科技给您安全的保障

-----------------------------------------------------

http://www.linuxidc.com/Linux/2008-08/14744.htm


对于rm,很多人都有惨痛的教训。我也遇到一次,一下午写的程序就被rm掉了,幸好只是一个文件,第二天很快又重新写了一遍。但是很多人可能就不像我这么幸运了。本文收集了一些在Linux下恢复rm删除的文件的方法,给大家作为参考。

  首先,最好的方法是避免这个问题,以下是几点建议:

  1、rm -rf误操作的后果是可怕的,rm -f也要三思而行,不能轻易使用。

 

  2、做好数据备份。

  3、用一些策略避免出错:

  提倡在shell下用 TAB 补全,用脚本执行任务,减少出错的机会。或者编写一个脚本,起名rm,在脚本里将真实的rm改为mv ,将删除的都mv到一个指定的目录里面,定期清理。

  那么rm删除的文件还能恢复吗?

  rm的man里面有如下说法:

  请注意,如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证该文件的内容无法还原,请考虑使用 shred。

  所以理论上rm删除的文件是还能恢复的。删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,再保存到另外的分区。在用rm误删除文件后,我们要做的第一件事就是保证不再向误删文件的分区写数据。

  通常我们可以有以下几种选择:

  1、借助工具。

  2、自己写程序。你需要会编程并了解对应的文件系统。

  3、如果数据很有用,也许可以找专业公司抢救。

  工具

  1、The Sleuth Kit http://www.sleuthkit.org/sleuthkit/(Autopsy是它的一个图形前端)

  2、Foremost    http://foremost.sourceforge.net

  3、一个全能的工具,Finaldata,可以恢复unix/linux/dos下误删的文件。对于unix,支持这些产品,     Solaris、AIX和HP-UX。对于linux,支持EXT2的文件系统。对于dos,支持FAT 12/16/32, NTFS 4/5/5.1 的文件系统。

  4、如果文件系统是ext2(对ext3无效):

  ext3的删除机制是直接把 inode data 删除了,所以造成 ext3 无法反删除(ext3设计为无法恢复被删除的文件)。

  unrm

  ext2ed

  debugfs(undel lsdel )

  recover

  Midnight Commander(mc)

  e2undel

  tct

  5、如果文件系统是FAT32或者NTFS:

  EasyRecovery

  Finaldata

  6、freebsd如果使用了rm,可以试一下undelete这个命令.

  7、当进程打开了某个文件时,只要该进程保持打开该文件,lsof可以用来恢复删除文件。


你可能感兴趣的:(linux,工作站,debian,linux,命令)