昨天意外删除了一些重要文件,经过一天左右的时候恢复,成功实现rm恢复。在这里总结一下方法。当然防范这种情况还是最重要的,可以参考之前写过的linux rm安全

恢复条件和一些准备:
一、保护数据。
先提点删除恢复常识:文件删除后,虽然没有清除文件内容,但是文件所占的存储空间已经允许被申请写入,所以要恢复文件的话,必需保证不要再向文件所在分区写数据,我的是虚拟机,直接kill进程了,非虚拟机可以umount分区,如果是主分区,直接断电。对于主分区,安全起见用livecd将硬盘只读挂载后操作。如果是虚拟机,即使是要恢复根分区,也可以不用livecd,通过复制硬盘镜像的方式生成多份硬盘来实现还原。将复制的硬盘添加到虚拟系统里,这样系统里就有两份硬盘了。但是我在尝试时发现,虽然可以正确识别为a和b两块硬盘,但如论启动哪个系统,都是从一块硬盘加载的,可能是boot信息的问题。

二、linux LVM文件系统
这个是逻辑卷管理,不是像ntfs、ext3一样的文件系统,所以不能直接挂载,因为一个lmv下面可能对应着多个逻辑分区,我们一次只能挂载其中的一个。所以要根据lvm找到逻辑分区。
1.“fdisk -l”
查看连接的硬盘是不是lvm,如果不是,则可以跳过这一部分。

fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM
2.如果是,安装lvm2
    自动安装:“apt-get install lvm2”(可能不提供包),或者“yum install 包名”安装(可能不提供包)
    直接下载:http://sources.redhat.com/lvm2/
3.“vgscan”,扫描逻辑分区

root@ubuntu:~# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
4.“lvscan”, 查看逻辑分区,状态未激活

root@ubuntu:~# lvscan
 inactive            '/dev/VolGroup00/LogVol00' [6.88 GiB] inherit
 inactive            '/dev/VolGroup00/LogVol01' [1.00 GiB] inherit
5.“vgchange -a y”  激活
6.“lvscan” 查看状态

root@ubuntu:~# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [6.88 GiB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.00 GiB] inherit

现在就可以通过来挂载指定的分区了。
参考:http://apps.hi.baidu.com/share/detail/19631288
三、linux源码安装
1. ./configure 如果失败,刚是缺少依赖库,下载安装所需库即可。
2. make 编译
3. make install 安装

恢复方法
方法一:使用debugfs(不适用我的情况,没有严格测试恢复,只列出了node值)
debugfs是调试文件系统的,可以查看文件的node值,根据文件系统Journal日志找到数据所在的块,将指定块存放起来即可。
适用范围:删除后,未关机,因为关机后Journal会丢失。
1。“umount 设备描述符文件”, 卸载指定分区
2。“debugfs 设备描述符文件”,启动debugfs
3。“cd 目录”,进入删除文件所在指定的目录
4。“ls -ld”,查看文件node值。如果没有你要的文件,那么很遗憾,它已经被破坏了。
5。“dumplog -i<node值>” 获取日志信息,找到块信息,示例Blocks: (0+1): 10234
6。保存块的数据,示例dd if=/dev/sda5 of=/tmp/test.txt bs=4096 count=1 skip= 10234
参考http://linux.net527.cn/Linuxwendang/xitongguanliyuan/16884.html

方法二:使用ext3grep
说明:使用方法网上有,但我在使用时并没有成功,因为它没有识别出lvm逻辑分区。
适用:lmv分二个分区我失败了,所以觉得没有用lmv分多个逻辑分区的应该适用。不可以恢复目录,只以恢复文件
提示:在要保存恢复文件的目录操作,确保空间足够,如果inode值为2,则会将整体分区数据保存而不仅是已被删的
1。下载安装ext3grep
http://code.google.com/p/ext3grep/
2。如果是lvm,则按上面提到的方式激活逻辑分区。
3。ext3grep --ls --inode node值   (node值是你要恢复的文件所在目录的node值,可以用debugfs查看,2则是分区根目录)
3。恢复目录里面的一个文件
 ext3grep /home/sheng/file --restore-file del/1 (注:del在分区根目录下)
 恢复所有文件
 ext3grep /home/sheng/file --restore-all
 参考:http://linux.chinaunix.net/techdoc/system/2009/07/07/1122061.shtml

方法三:使用extundelete (最有效方法)
extundelete是基于ext3grep的软件,提供方便的命令,可以恢复文件,而且对lmv逻辑分区也有效,我就是用这种方法还原的数据。
适用:删除数据未被破坏的数据
提示:在要保存恢复文件的目录操作,确保空间足够,如果inode值为2,则会将整体分区数据保存而不仅是已被删的
1。下载安装extundelete
   http://extundelete.sourceforge.net/
2。如果是lvm,用上面提到的方法激活逻辑分区。
3。extundelete 分区设备 参数
  常用参数:--restore-all     全恢复到当前目录下
    --restore-inode 值 按inode恢复
 --restore-files filename
 --restore-directory path/of/directory
 参考:http://extundelete.sourceforge.net/

linux rm文件恢复总结相关推荐

  1. linux找回rm的文件夹,Linux rm 文件恢复

    Linux下删除命令 rm 大家肯定是熟悉得不能再熟悉了,然后有时候却阴沟里翻船不小心删除了某些重要的文件,想死的心都有了....现在我们就来看看被误删除的文件要如何恢复? Linux文件系统 Lin ...

  2. linux 误删文件恢复

    linux 误删文件恢复 文档太给力了!误删了几个重要文件,抖抖嗦嗦偷偷恢复了,救了我!!! http://jingyan.baidu.com/article/2f9b480d6c2bcd41cb6c ...

  3. linux rm 文件找回_linux下执行rm -rf命令后如何恢复

    果真感觉蛋疼了,欲哭无泪啊!写了一天的成果,想着把之前备份的文件删除呢,结果把刚写完的删了. 国外著名linx管理员守则中有这么一条:"慎用rm -rf命令,除非你知道此命令将带来什么后果. ...

  4. linux重启文件被删除,linux 误删文件恢复方法(debugfs)

    应用linux自带工具debugfs恢复误删文件方法演示 1.创建一个文件写入内容并删除 cj@cj-virtual-machine:~/Documents/debugfs_example$ vim ...

  5. Linux下文件恢复

    接着上一个业务,关于Linux下文件丢失的问题, 之前的文件丢失是因为存放在/var/tmp下,被系统默认清理了,需要恢复 当然如果用户手动清理的话,如 : rm 删除, 那么都可以使用下面的方式恢复 ...

  6. linux mysql 文件恢复_linux下误删数据文件恢复

    linux下文件被删除可以用很多工具进行恢复,例如undelete(适合ext2,ext3).giis(不能恢复安装giis之前的文件).ext3grep(仅限ext3).R-linux(支持ext3 ...

  7. linux内核文件恢复,linux下系统文件恢复

    当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容. 假如由于误操作将/var/log/messages文件删除掉 ...

  8. linux rm 文件找回_linux rm -rf * 文件恢复记

    手太快,肠子都毁清了.本来是删除一个文件 rm path/myfile.txt 结果不知为何加了个*,变成了 rm path/myfile.txt * 赶紧ls,发现所有代码都化为了乌有,还没提交,还 ...

  9. linux rm 文件找回_linux rm -rf 删除文件之后的恢复办法

    记录我尝试恢复rm命令删除文件之后的恢复的三种办法. 先不管使用哪种办法,网上找到的主流的都是基于inode的,所以,在文件被删除后,马上挂起挂载盘只允许读操作,拒绝写操作是第一要义. 第一种 误删文 ...

最新文章

  1. linux id 命令 显示用户id和组id信息
  2. [C++调试笔记]执行声明的读写文件操作
  3. 创建hadoop用户并配置ssh免密码登录
  4. delphi dxBarManager 的dxBarEdit 输入问题
  5. 26 FI配置-财务会计-外币评估-定义评估方法
  6. 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
  7. [Scrum] 12.22
  8. 如何在博客园中自定义导航菜单
  9. 设计模式学习一:strategyPattern
  10. C语言代码自动生成工具
  11. 2018年中国区块链产业发展白皮书(附PDF下载)
  12. DSP重新上电程序不能运行
  13. 米家扫地机器人按键没反应_小米扫地机系统重置键在哪?
  14. DotNetBar 14中文版
  15. PCB Layout 中的直角走线、差分走线和蛇形线
  16. 汉诺塔移动次数递归算法c语言,谁知道C语言汉诺塔递归算法及其详细注释?
  17. Assembler - 循环程序设计
  18. linux dd 刻录光盘,使用dd命令制作U盘启动盘wodim刻录光盘cd dvd
  19. 手脱ASPack v2.12
  20. 扭曲丛林服务器未响应,LOL等级最高玩家已246级 狂刷扭曲丛林攒经验

热门文章

  1. Bartender开发经验
  2. bert获得词向量_词向量详解:从word2vec、glove、ELMo到BERT
  3. TCGA数据库ceRNA网络构建(一)数据下载
  4. Lenovo/联想A628T root教程_方法
  5. 与链接服务器的测试连接失败
  6. 隆云通水质盐度传感器
  7. 穿山甲和广点通激励视频广告打开失败的异常处理
  8. java web 插入图片 / 背景
  9. VC6.0在Windows7下编译问题:Error spawning cl.exe
  10. mybaties应用(常用sql函数)