原文地址:http://www.libenfu.com/vim-分区下误删的文件,恢复文件全记录-转

当时我的工作目录是/source/needrecovered

$ pwd
/source/needrecovered

原本打算清空其中的一个子文件,

$ rm -rf canbedeleted/html

却打成如下命令:

$ rm -rf canbedeleted/ *

当时我琢磨着今天怎么删个小文件夹这么慢呢。等我仔细看了下命令,反应过来的时候,已经太迟了,整个工作目录被清空了 。

没辙了,只能先到网上找找解决方案了,网上大致提到的方法有两种:一种是利用debugfs;第二种是利用ext3grep

第一种方法,我尝试了若干次都以失败告终,第二种成功了。但是相同的是:两种方法首先提到的都是将对该分区进行操作的应用先全部关闭,具体如下:

以下的操作尽量使用root操作,以提高数据恢复的成功率。

#该命令用于列出操作该分区的进程
fuser -v -m /source
#如果没有很重要的进程,利用下面的命令将其全部 kill 掉
fuser -k -v -m /source

执行上面命令的时候,务必要将你的工作目录切换到/source以外,否则你的sshd会被kill掉。

这样子可以达到两个好处

1) 防止新的文件操作影响数据的恢复

2) 方便对磁盘或者分区进行进一步的操作,如:mountumount

接下来我们看看磁盘分区情况:

$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda8 ext3 7.9G 6.3G 1.2G 84% /source
/dev/sdb1 fuseblk 299G 266G 33G 90% /data/

需要恢复的分区是/dev/sda8,挂载点是/source

先将此分区卸载,并在/data分区建立一个用于存储备份数据的文件夹。

umount -v /source
mkdir -p /data/recovery

现在轮到主角登场了,先去下载一份ext3grep的源码,并安装:

cd /data/recovery
#此链接地址以官网最新版本为准
wget http://ext3grep.googlecode.com/files/ext3grep-0.10.2.tar.gz
tar xfz ext3grep-0.10.2.tar.gz
cd ext3grep-0.10.2
./configure --prefix=/data/recovery
make && make install

接下来就进入正式的恢复工作,先对需要恢复的磁盘进行扫描。

cd /data/recovery
nohup /data/recovery/bin/ext3grep /dev/sda8 --ls --inode 2 &
#建议使用 nohup 和 &,因为如果分区很大的话耗时比较长

扫描完毕后,/data/recovery中会出现两个分别名为c0d2.ext3grep.stage1c0d2.ext3grep.stage2的文件。前者可以直接忽略,后者里面保存着可以被恢复备份的文件名。

由于我需要备份的文件很多,几十G,就用下面这个命令进行全部恢复。

cd /data/recovery
nohup /data/recovery/ext3grep/bin/ext3grep /dev/sda8 --restore-all &
#建议使用 nohup 和 &,因为如果分区很大的话耗时比较长

需要注意的是,restore-all参数会将整个磁盘所有文件(已删除可恢复的文件和未被删除还存在的文件)进行恢复和备份处理,所以请确认你的存放恢复文件的分区有足够的空间。

如果仅仅是恢复几个文件的话,建议使用restore-file参数 备份的文件会存放在工作目录的名为RESTORED_FILES的文件夹里,本文中就是cd /data/recovery/RESTORED_FILES

Linux下恢复误删除的文件的更多相关文章

  1. linux下恢复误删除的文件方法(ext2及ext3)

     linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...

  2. 恢复Linux下被误删除的文件(笔记)

    恢复Linux下被误删除的文件 [root@xuegod63 ~]# mount /dev/cdrom /mnt/ 分一个区:sda4  查找:extundelete 分一个区:sda4  [root ...

  3. linux下rm误删除数据库文件的恢复方法

    在linux redhat 5.4版本,rm误删除数据库文件的恢复过程分享.测试没有问题,可用. 1.首先测试rm 误删除数据库文件 [oracle@primary dbwdn]$ ll total ...

  4. 如何在Linux上恢复误删除的文件或目录

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了.linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分 ...

  5. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  6. linux下分卷tar.bz文件的合并并解压缩

    linux下分卷tar.bz文件的合并并解压缩 例: linux.tar.bz2.001;linux.tar.bz2.002;linux.tar.bz2.003; 首先 cat linux.tar.b ...

  7. linux下php上传文件注意

    linux下php上传文件注意1.修改上传目录权限linux 修改某目录下所有所有子目录权限chmod -R 777 html修改某目录为任何用户都用写读执行权限chmod a+rwx html2.设 ...

  8. Linux下遍历目录及文件,更改权限

    Linux下遍历目录及文件,更改权限 引言: 我在Linux下搭建android时,将eclipse及sdk复制到/usr/下时,总会出现无法读,无法写写样的问题. 解决方案: 有两个方案: 一.将复 ...

  9. linux下java调用.so文件的方法1: JNI

    摘自http://blog.163.com/squall_smile/blog/static/6034984020129296931793/ https://my.oschina.net/simabe ...

随机推荐

  1. 学习笔记:oracle学习二:oracle11g数据库sql*plus命令之常用sqlplus命令、格式化查询结果

    目录 1.常用sqlplus命令 1.1 HELP命令 1.2 describe命令 1.3 SPOOL命令 1.4 其他常用命令 1.4.1 define命令 1.4.2 show命令 1.4.3 ...

  2. windows下图形学视觉基本库安装不完全指南

    安装各种库东奔西走...... GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O,并包括了以下常见的功能: ...

  3. ARTS第九周打卡

    Algorithm : 做一个 leetcode 的算法题 /* 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. ...

  4. 十二、使用PWM调整LCD背光亮度

    和手机一样,开发板中也带有调整背光亮度的功能. 调整背光亮度依赖于PWM,它通过调节脉冲宽度来控制背光亮度,此方式需要使用PWM驱动.本章将对其进行讲解. 一.用户空间调整背光亮度 一般应用程序可以通 ...

  5. 【动态规划】Concerts

    Concerts 题目描述 John enjoys listening to several bands, which we shall denote using A through Z. He wa ...

  6. ( 十二)Json的使用(上)

    一.什么是JSON 1.1 javaScript中定义对象的几种方式 使用内置对象 自定义对象构造 使用JSON符号  (1)使用内置对象 JavaScript可用的内置对象可分为两种: 1,Java ...

  7. 北京大学1001ACM——高精度类型题总结

    题目描述: ExponentiationTime Limit: 500MS   Memory Limit: 10000KTotal Submissions: 80517   Accepted: 190 ...

  8. Java 之 JDK9 对集合添加的优化

    通常,在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它. 实例化集合,几个 add方法调用,使得代码重复. Java 9,添加了几种集合工厂方法,更方便创建少量元素的集合. ...

  9. C++ 类再探

    关于类的一些遗漏的点. #include <iostream> #include <typeinfo> #include <string> using namesp ...

  10. flask小结

    http通讯过程 https://www.cnblogs.com/andy9468/p/10871079.html 1.flask开发环境 https://www.cnblogs.com/andy94 ...