星期五的晚上,一手接电话,一手在键盘敲着命令,本该是 rm -rf  /usr/local/apache2/htdocs/tmp/ 命令却少敲了tmp ,竟然运行  rm -rf /usr/local/apache2/htdocs ,这命令是要把htdocs目录下所有文件都删除啊,还好发现的快,赶紧ctrl+c,救回来了几个文件夹。但有几个重要的文件夹都没了,这目录下的文件夹有的是半年前的工作,有的是几个月前的工作,就在一瞬间消失的干干净净。恨自己为什么不备份,恨自己为什么接电话手还在键盘旁,恨自己为什么不多加敲几个字母。几分钟的发泄之后,冷静下来, 思考着怎么把它们找回来。真是黑色星期五!

备份备份备份真的真的真的真的很重要很重要很重要。。。。。。

在网上泡了好久,该用的恢复方法都试了,可转眼周末都过去了,还没把它们恢复回来。在 sleuthkit 和autopsy的使用上卡住了,在image镜像 输入路径卡住了,输入/dev/sda2  建立了case,但analysis时 file type 却没被激活,在image镜像输入/usr/local/apache2/htdocs/* 却报image格式错误。还在摸索中,期待使用过的朋友过来交流下。

恢复误删文件引言:(前人总结)

对于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 是它的一个图形前端):

The Sleuth Kit是一套强大的数字调查、取证工具集合,它可以运行在windows,Linux, OS X, FreeBSD, OpenBSD和Solaris上,能够分析 FAT, NTFS, UFS, EXT2FS和EXT3FS文件系统。The Sleuth Kit能为用户提供文件系统的详细信息,包括已删除数据。The Autopsy Forensic Browser是The Sleuth Kit的Web界面接口,使得工具的使用更加容易和快速。
工具更多信息及下载地址:http://www.sleuthkit.org/
 

我目前使用的正是这个软件,下载 TSK http://www.sleuthkit.org/sleuthkit/  和autopsy http://www.sleuthkit.org/autopsy ,先安装TSK,./configure 、 make 、make install、  可执行文件安装到 /usr/local/bin下, 然后cd autopsy,./configure 进行配置,设置Evidence Locker 目录,如/tmp/recover,需先创建此目录,autopsy会将image文件都存放在此目录下,另一个是Have you purchased or downloaded a copy of the NSRL (y/n) [n, NIST NSRL: 也就是 [NIST National Software Reference Library] ,這是美國政府的資料庫,在資料庫中的檔案被視為正常可被信賴的系統軟體。因此在列表內的檔案可忽略,減輕調查員的工作量。 可在 http://www.nsrl .nist .gov/  下载安装。]默认是没安装,不安装不影响。设置之后覆盖原来的autopsy可执行文件,直接./autopsy就可运行这个软件。网页界面的,看着很舒服,省去不少命令的输入,如何使用还需一番摸索。

2、The Coroners Toolkit

也就是我们所说的TCT ,想要在国内下载的话,您可以到安全焦点( http://xfocus.org/tool/other/tct-1.07.tar.gz )下载。这是一个unix下的命令行文件系统工具集,支持FFS及ext2fs,从块及结点处来对数据进行恢复。它能够针对文件的最后修改、访问或者改变(MAC)的时间来进行分析,并且根据数据节点的值提取出文件列表以进行恢复。 TCTUTILs :在 http://xfocus.org/tool/other/tctutils-1.01.tar.gz 可以下载当前最新版本。它是对TCT的补充,提供了根据文件名对数据进行恢复的命令行工具。这两个工具都需要使用者对一些底层基本知识比较了解。Autopsy Forensic Browser :可以从http:// xfocus.org/tool/other/autopsy-1.01.tar.gz 下载。它提供了一个友好的html界面给tct及tctutils。它能使枯燥的分析工作相对轻松些:)

安装:TCT在各种unix平台下都经过了比较好的测试。现在能够支持FreeBSD、OpenBSD、SunOS、Linux等平台。TCTUTILs和Autopsy则不一定能跑得起来,我测试的平台是一台默认安装的Red Hat 6.2系统。 tct :  # tar zvfx tct-1.07.tar.gz -C /usr/local/tct/; cd /usr/local/tct/tct*; make 这样把tct展开到/usr/local/tct/tct-1.07/的目录下,并且进入,make。这里,如果是make过之后,需要重新在编译的话,需要运行perl reconfig命令重新配置。 tctutils:     # tar zvfx tctutils-1.01.tar.gz -C /usr/local/tct;cd /usr/local/tct/tctu*;make现在tctutils似乎只在OpenBSD 2.8、Debian Linux 2.2、Solaris 2.7下经过详尽测试,而对FreeBSD还支持不好。通常make不会出现什么问题,如果有,自己改下代码或者Makefile即可。 Autopsy : 解包后运行./configure后,它会自己寻找一些实用工具如grep、strings、md5sum的路径,并要求确认tct以及tctutils的路径(如果没找到会要求你输入正确路径)。最后要求输入需要检查的文件系统所在,才生成程序autopsy。

3、Foremost http://foremost.sourceforge.net  和recover   http://xfocus.org/tool/other/recover-1.2.tar  。

这两个软件可以恢复ext2 ext3下被删除的文件,但是没有tct那样功能强大。只是相对更“傻瓜”一些,操作起来比较方便。 运行简单,只要运行./foremost    ./recover就OK了,然后会问你需要恢复的数据所以磁盘、删除时间、文件大小等一系统信息,以帮助精确定位需要恢复的文件,但最后恢复出来的东西,都是以数字排序,分析起来有一定的难度。不建议使用这种类型的软件。

4、一个全能的工具,Finaldata , 可以恢复unix/linux/dos下误删的文件。对于unix,支持这些产品,    Solaris、AIX和HP-UX。对于linux,支持EXT2的文件系统。对于dos,支持FAT 12/16/32, NTFS 4/5/5.1 的文件系统。 网络上可以下载到Finaldata的windows 免费版本,图形界面的,对windows来说确实是个好东西,操作方便。 但Finaldata的linux版本,不是免费的,找了好久也没找到破解版的。

5、linux自带的命令恢复操作,如debugfs 命令。

  如果文件系统是ext2(对ext3无效),ext3的删除机制是直接把 inode data 删除了,所以造成 ext3 无法反删除(ext3设计为无法恢复被删除的文件)。我的是ext3文件系统,linux带了debugfs命令,但因只一个分区,#debugfus  /dev/sda2, 报错因这个磁盘分区太大导致打开失败,所以安装时还是多分几个区出来比较好,这次输在只有一个分区,所以使用不了这个debugfs命令,不能查看到被删除文件的节点,以至于不能恢复误删除文件。查看linux的分区情况, 使用命令# fdisk -l  查看便知。debugfs(undel lsdel )的使用上网查。还可用unrm、ext2ed、e2undel等命令。

在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是 1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。    

6、还有一种恢复方法,当误删除的文件有进程访问时,即当进程打开了某个文件时,只要该进程保持打开该文件,可以用 # lsof 来恢复删除文件。操作就是#lsof 查看误删除文件的节点,然后dump回来。

本文引用地址:http://www.sciencenet.cn/blog/user_content.aspx?id=355554

linux恢复硬盘数据相关推荐

  1. linux shell数据重定向(输入重定向与输出重定向)详细分析

    转载自: linux shell数据重定向(输入重定向与输出重定向)详细分析 - 程默 - 博客园 http://www.cnblogs.com/chengmo/archive/2010/10/20/ ...

  2. Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取、存储和可视化展示

    Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取.存储和可视化展示 1. 前言 2. Node_exporter 2.1 安装 node_expor ...

  3. windows服务器连接linux nfs,windows设置通过NFS连接到Linux共享数据

    一.搭建NFS服务 1.NFS服务搭建环境说明 NFS服务端: IP:192.168.43.156 NFS客户端: IP:192.168.43.185 两台服务器都关闭防火墙及SElinux syst ...

  4. linux共享数据,使用Linux共享数据对象

    Linux共享数据对象类似于windows中的动态链接库,其后缀通常为so.* (*为版本号),例如为我们所熟知的libpcap,它对应的文件为/usr/lib/libpcap.so.如果程序中使用了 ...

  5. Linux网络 - 数据包的接收过程

    Linux网络 - 数据包的接收过程 嵌入式Linux中文站 嵌入式Linux中文站 微信号 emblinux 功能介绍 嵌入式Linux中文站提供专业嵌入式Linux开发技术资讯 Table of ...

  6. 装了linux后windows被破坏了,windows下可以破坏linux的数据么-

    windows下可以破坏linux的数据么- (2011-08-28 01:58:11) 标签: 杂谈 windows下可以破坏linux的数据么?单机装了2个系统,一直都很好,后来发现xp不能进入了 ...

  7. linux cadaver 命令,备份Linux操作系统的数据到坚果云的方法

    坚果云支持WebDAV,这样就能在Linux操作系统中使用命令行或者脚本的方式把数据备份到坚果云空间中,本文提供实现的方法. 首先开启坚果云WebDAV服务 "账户信息"--&qu ...

  8. 远程linux还原本地bak文件,Linux -- 服务器数据备份恢复策略

    一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令, ...

  9. 备份数据 宝塔linux_宝塔面板教程大全--宝塔linux面板数据备份教程

    宝塔面板教程大全--宝塔linux面板数据备份教程 这一部分数据备份包括网站数据备份和数据库的备份.如果不了解数据备份的同学,此章节内容建议认真看一下,做好数据备份是你网站数据安全的最重要的保障! 本 ...

最新文章

  1. python提高办公效率-提升Python程序运行效率的6个方法
  2. linux内核grub的作用与用途,linux中grub是干嘛的
  3. java定义基础变量语句_java语言基础-变量
  4. Android之CSDN 牛人博客索引
  5. jsoup 获取html中body内容_jsoup实现java抓取网页内容
  6. JS学习(this关键字)
  7. 单例模式中的多线程分析synchronized
  8. 微信公众号测试账号获取授权须关注
  9. 字符串的排列组合问题
  10. 不卡顿成用户购机第一要素,Mate 9深得人心
  11. java 码表_java IO之 编码 (码表 编码 解码 转换流)
  12. D.背单词的小智(二分)
  13. python提取图片文字_python实现提取图片中文字
  14. 如何区分集线器、交换机、路由器呢
  15. [CodeForces 332B]Maximum Absurdity[DP]
  16. 初学者入门渗透工程师就业宝典
  17. LabVIEW Arduino电子称重系统(项目篇—1)
  18. 网页黑白代码将整个网站变为黑白色怎么弄
  19. c语言编程工具排行,十大最热门的编程语言_2020TIOBE编程语言排行榜
  20. 我爱你宠物网——创业笔记(三)

热门文章

  1. 项目管理PMP-扫盲篇
  2. ifconfig ens33 内容详解
  3. 模拟和数字电子电路基础-2-电阻网络
  4. zynqmp PL设备驱动编写
  5. 使用Scrapy框架爬取微医H5数据
  6. 北京一日行之十五——八达岭野生动物园
  7. 新书推荐 |《区块链社区运营手册》
  8. 布局元宇宙,探索新未来——WEB3.0·重庆站圆满落幕
  9. 圆台下料展开计算方法_圆台展开的方法
  10. Sonar中的技术债务简要了解