extundelete - Ubuntu 误删文件恢复

系统版本:14.04

文件系统版本:ext4

可恢复的原理

首先知道什么是 inode

inode 存储了包含文件的元信息,比如文件的字节数,文件的读写执行权限,文件的时间戳,文件数据 block 的位置等信息。

所谓 block 就是类似于 Windows 中簇的概念,是文件系统读写磁盘的最小单位,这里的文件数据 block 存储了文件数据在磁盘中的数据。

当我们删除文件,inode 号不变,其信息还在,只不过该 inode 号被设置为可用,其指向的 block 空间被设置为空闲,只要我们能【在 inode 复用之前】找到要恢复的文件的 inode 且

【inode 指向的 block 没有被覆盖】,然后就可以正确恢复文件。

对应的两种恢复失败的情况: inode 已被重新使用

Block 被覆盖

关于 inode

http://www.ruanyifeng.com/blog/2011/12/inode.html

第一步:尽量减少要恢复的分区的文件操作

为了预防文件误删除的情况,可以提前安装文件恢复程序,否则程序的安装也可能会导致文件恢复失败。

如果可以,将要恢复的分区卸载或设置为只读分区,防止 inode 及数据被覆盖使用。

umount /分区

mount –o remount,ro /分区

关于分区挂载

http://www.cnblogs.com/avril/archive/2010/03/23/1692783.html

第二步:查看文件系统和分区

使用 df –T /home/命令查看/home/文件夹对应的分区和文件系统查看文件系统和分区

文件系统 类型 1K-blocks 已用 可用 已用% 挂载点

/dev/sda1 ext4 19478204 4300092 14165632 24% /

这里文件系统分区为 /dev/sda1 文件系统 ext4 extundelete 只支持 ext4/ext3 文件系统关于 ext4、ext3

http://os.51cto.com/art/201205/334497_all.htm

关于 df 命令

http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html

第三步:检查 g++编译器

输入 g++

如果没有,按照提示进行安装即可第四步:下载安装 extundelete

1. 下载 网址:http://extundelete.sourceforge.net/

2. 解压 跳转到下载目录,执行

tar –xjvf extundelete-0.2.4.tar.bz2

3. 安装依赖

sudo apt-get install e2fsprogs sudo apt-get install e2fslibs-dev

4. 编译

./configure

make

sudo make intall

第五步:使用

这里我们只演示恢复单个文件,且文件所在文件夹没有被删除的情况,具体请参考 extundelete 的帮助文档

建立路径及文件如图所示

里面存储的是我们熟悉的 Hello,World

1.首先需要 root 权限

http://www.cnblogs.com/weiweiqiao99/archive/2010/11/10/1873761.html

User-root sudo su 即可

Root->user ctrl+D

2.查看要恢复文件夹所包含文件的 inode

ls –id /路径

3.查看要恢复文件所在文件夹所在分区

df /路径

这里我们看到分区为 /dev/sda1

4.显示文件夹所包含的文件的 inode

sudo extundelete /自己的分区 /路径 –inode 文件夹 inode 号

如果分区依然挂载,会提示以下信息,提示操作可能失败

输入 y 即可

5. 恢复 inode 指定的文件到特定文件夹

sudo extundelete /自己的分区 –restore-inode 要恢复的文件的 inode –o 要恢复到的文件

恢复的文件的命名为 file.inode 如果不指定输出目录,默认的输出目录为 RECOVERED_FILES 目录

细心的同学可以发现,当前的 inode 并不是之前的 inode ,因为中间的多次测试都失败了,比如

恢复了错误的文件还有就是,所要恢复的 inode 已经被重新分配了

删除需谨慎

参考将 rm 映射到 trash,让 rm 类似于回收站的功能

http://sparkandshine.net/prevention-rm-command-accidentally-erased-computer-files/

chattr 命令防止某个文件被删除

http://coolsky.blog.51cto.com/177347/1230332

备份

https://www.zybuluo.com/ghosert/note/3408

等…

ubuntu 文件恢复相关推荐

  1. linux恢复设置文件夹,将.bashrc文件恢复到Ubuntu中的默认设置

    以下介绍在Ubuntu系统中将.bashrc文件恢复默认设置的方法,如果你在Ubuntu系统中把.bashrc文件搞坏了就按下面的方法恢复bashrc文件. 背景 我有一个Ubuntu VM,我经常用 ...

  2. Ubuntu中恢复rm命令误删文件

    环境 :ubuntu16.04 extundelete介绍 extundelete是一个实用程序,可以从ext 3或ext 4分区恢复已删除的文件.ext 3和ext 4文件系统是Linux发行版(如 ...

  3. Ubuntu中恢复rm命令误删文件(转)

    计算机系统:Ubuntu 16.04 1 背景 在做项目的时候,本来想使用rm命令删除以14开头的文件,结果写成如下形式: rm 14 * 注意,本来14和*之间不应该有空格的,但是误写了一个空格,结 ...

  4. ubuntu 20.04中sources.list文件恢复系统默认源

    前言 ubuntu 20.04中sources.list文件恢复系统默认源 小白学习,误该后改不回来,找了很久才找到,做个记录 一.sources.list文件恢复系统默认源 1.进入编辑 sourc ...

  5. Ubuntu文件的复制、移动和删除命令

    Ubuntu文件的复制.移动和删除命令 先说说cp复制命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或目 ...

  6. Linux文件恢复利器 ext3grep与extundelete

    Linux文件恢复利器 ext3grep与extundelete extundelete-0.2.4.tar.bz2 ext3grep-0.10.2.tar.gz https://www.cnblog ...

  7. 【转】文件恢复神器extundelete

    参考博文: 1.Linux中VMware虚拟机增加磁盘空间的扩容操作 http://www.net130.com/CMS/Pub/special/special_virtual/special_vir ...

  8. Sql Server实用操作-无数据库日志文件恢复数据库两种方法

    数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启s ...

  9. mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...

最新文章

  1. 解压ubi文件_制作ubi文件系统
  2. 可设置指定时间自动消失的 MessageBox实现
  3. python网络编程要学吗_总算发现如何学习python网络编程
  4. led内部结构_科普PCB,DPC,陶瓷PCB对于LED封装有哪些差异? - led显示屏_高清led显示屏价格_led显示屏生产厂家...
  5. windows 停止nginx
  6. 10产品经理要懂的-人性行为之自私的本质
  7. Windows2003工组环境通过CA证书对加密WEB服务器
  8. 儿童机器人编程入门优先学习什么?
  9. 安卓layout布局三等分
  10. unity Audio 基础知识二 Audio Mixer
  11. 20金融学431考研应该注意些什么
  12. EasyBoot使用方法
  13. 南头中学2021年高考成绩查询,深圳新安中学和南头中学哪个好
  14. Linux环境安装+阿里云+jdk8
  15. 在公众号中通过链接下载APP时,如何不通过应用宝,直接跳浏览器下载?
  16. github标准pull request提交流程
  17. 玩转DWZ (一)---项目中怎么使用dwz
  18. python return返回值格式化_day11__函数名的应用,python新特f-strings格式化输出、迭代器...
  19. idea查看java文件编码_Intellij Idea编译项目下的.java文件时的编码问题
  20. ZigBee定位系统与网络拓扑

热门文章

  1. python strftime时分秒_Python time.strftime()用法及代碼示例
  2. matlab中scr,基于matlab生成的scr文件,实现autocad曲线绘制,代码问题
  3. 聊聊线性代数(15)SVD的应用--3
  4. Gist in GitHub
  5. 036卫星轨道及卫星在轨运动
  6. 未来已来,新技术如何推动商用车行业转型
  7. 【java】JDK动态代理原理
  8. Rancher2.6全新Monitoring快速入门
  9. 线性回归——简单线性回归、多元线性回归
  10. 用Python进行多元线性回归分析(附代码)