原文地址: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. jquery换一批的写法

    jquery换一批的写法 <pre> <img src="{$yuming}/images/3/huanyipi.png" alt="" cu ...

  2. 5、1 es 数据库和mysql 数据库同步 (Windows操作系统)

    (1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意) (2)文件夹下创建mysql.conf (名称随意) ,内容如下: input { jdbc { #sc表 jd ...

  3. ubuntu中不能使用终端的情况

    跟着网上的步骤去升级了一波python3,可谓一波未平! 当我将ubuntu中自带的python3.5升级3.6时,突然发现一个问题,怎么终端打不开了,于是去百度,找到一个博主的笔记,和我的情况一模一 ...

  4. Apache Tomcat 安装与配置教程

    JDK的安装与配置 1. 从官网下载JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...

  5. mysql5.7主主(双主)复制

    在server1上操作 vi /etc/my.cnf 修改或添加下面这几行: server-id=1 log-bin=mysql-bin # 启用二进制日志 auto-increment-increm ...

  6. (二)发布第一个WebService服务与DSWL文档解析

    1. 编写接口 package service; import javax.jws.WebService; /** * 第一个webservice服务, * @WebService注解表示这是一个we ...

  7. 使用Java Executor框架实现多线程

    本文将涵盖两个主题: 通过实现Callable接口创建线程 在Java中使用Executor框架 实现Callable接口 为了创建一段可以在线程中运行的代码,我们创建了一个类,然后实现了Callab ...

  8. fastclick插件中存在的bug

    1.在vue项目中安装fastclick插件 npm install --save fastclick 2.在main.js中引入并绑定到body import FastClick from 'fas ...

  9. H5各种头部meta标签功能大全

    <!DOCTYPE html>  H5标准声明,使用 HTML5 doctype,不区分大小写 <head lang=”en”> 标准的 lang 属性写法 <meta ...

  10. Java 之 IDEA 的 Debug 追踪

    使用 IDEA 的断点调试功能,查看程序的运行过程. 1.在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序 2.点击 Debug 运行模式 3.程序停止在断 ...