linux恢复误删文件


恢复Linux下误删除的文件
删除文件和文件夹
rm -rf 文件名或目录名
-r 递归删除(可以删除目录和目录里面的东西)
-f 强行删除

ext4文件系统上删除文件,可以恢复: extundelete
windows恢复误删除的文件: final data v2.0 汉化版 和 easyrecovery

Linux文件系统由三部分组成:文件名,inode,block

a.txt -->inode -> block
文件名 存放文件元数据信息 真正存放数据

查看inode号:
常识: 每个文件,最少有一个inode号。
[[email protected] ~]# ls -i a.txt
393788 a.txt

查看inode中的文件属性; 通过stat命令查看inode中包含的内容
[[email protected] ~]# stat a.txt #查看inode信息:
File: `a.txt‘
Size: 1720 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 393788 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-10-25 10:21:07.368552471 +0800
Modify: 2015-10-25 10:21:02.773527478 +0800
Change: 2015-10-25 10:21:02.773527478 +0800

block块:真正存储数据的地方
块 2M 数据 101M

为什么删除比复制快?

创建

删除

如何避免误删除的文件内容被覆盖???
卸载需要恢复文件的分区:或以只读的方式挂载

实战:在RHEL6上恢复被误删除的文件
下载extundelete
http://sourceforge.net/ 开源软件发布中心

准备测试分区:
[[email protected] /]# fdisk /dev/sdb1 #创建一个sdb1分区
[email protected] ~]# partx -a /dev/sda #获得新分区表

格式化 ext4 文件系统

挂载

复制一些测试文件,然后把这些文件再删除:
[[email protected] ~]# cp /etc/passwd /sdb1
[[email protected] ~]# cp /etc/hosts /sdb1
[[email protected] ~]# echo aaa > a.txt
[[email protected] ~]# mkdir -p /sdb1/a/b/c
[[email protected] ~]# cp a.txt /sdb1/a/
[[email protected] ~]# cp a.txt /sdb1/a/b/
[[email protected] ~]# touch /sdb1/a/b/kong.txt

安装tree命令:
[[email protected]~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
[[email protected] ~]# tree /sdb1

删除文件:
[[email protected] ~]# cd /sdb1
[[email protected] sdb1]# ls
a hosts lost+found passwd
[[email protected] sdb1]# rm -rf a hosts passwd

如何避免误删除的文件内容被覆盖???
卸载需要恢复文件的分区:或以只读的方式挂载

上传extundelete到linux中:
从windows上传extundelete文件到linux,安装xmanager v4 或者CRT
[[email protected] ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
安装后,就有了rz命令和sz命令
rz : 上传windows中的文件到linux
sz :将linux中的文件传到windows

解压并安装extundelet
[[email protected] extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2

[[email protected] ~]# cd extundelete-0.2.4
[[email protected] extundelete-0.2.4]# ls
acinclude.m4 autogen.sh configure depcomp LICENSE Makefile.in README
aclocal.m4 config.h.in configure.ac install-sh Makefile.am missing src
[[email protected] extundelete-0.2.4]# ./configure #检查系统安装环境
Configuring extundelete 0.2.4
configure: error: Can‘t find ext2fs library

解决:
[[email protected]]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm
warning: /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
1:e2fsprogs-devel ########################################### [100%]

[[email protected] extundelete-0.2.4]# make #编译,把源代码编译成可执行的二进制文件。
-j 4 使用4进程同时编译,提升编译速度 或 使用4核CPU同时编译。

[[email protected] extundelete-0.2.4]# make install #安装

开始恢复:
方法1:通过inode结点恢复
方法二:通过文件名恢复
方法三:恢复某个目录,如目录a下的所有文件:
方法四:恢复所有的文件

[[email protected] ~]# mkdir test #创建一个目录使用于存放恢复的数据
[[email protected] ~]# cd test/

通过inode结点查看被删除的文件名字:
[[email protected] test]# extundelete /dev/sdb1 --inode 2

方法1:通过inode结点恢复
[[email protected] test]# extundelete /dev/sdb1 --restore-inode 12
[[email protected] test]# diff /etc/passwd RECOVERED_FILES/file.12 # 没有任何输出,说明一样

方法二,通过文件名恢复
[[email protected] test]# extundelete /dev/sdb1 --restore-file passwd

方法三:恢复某个目录,如目录a下的所有文件:
[[email protected] test]# extundelete /dev/sdb1 --restore-directory a
[[email protected] test]# tree RECOVERED_FILES/a/
├── a.txt
└── b
└── a.txt

方法四:恢复所有的文件
[[email protected] test]# extundelete /dev/sdb1 --restore-all

[[email protected] test]# tree RECOVERED_FILES/
RECOVERED_FILES/
├── a
│ ├── a.txt
│ └── b
│ └── a.txt
├── hosts
└── passwd

这是删除前的数据:
[[email protected] ~]# tree /tmp/sda4/
/tmp/sda4/
├── a
│ ├── a.txt
│ └── b
│ ├── a.txt
│ ├── c #空目录
│ └── kong.txt #空文件
├── hosts
├── lost+found
└── passwd

extundelete在恢复文件的时候能不能自动创建空文件和目录?
答:不能。
REHL7 xfs系统 可以的
总结:
方法1:通过inode结点恢复
方法二:通过文件名恢复
方法三:恢复某个目录,如目录a下的所有文件:
方法四:恢复所有的文件

时间: 2024-11-05 12:13:33

linux恢复误删文件的相关文章

Linux下恢复误删文件:思路+实践

周五篮球群里有人问误删文件了怎么恢复,得知是ext4文件系统之后我推荐了ext4magic这个工具,然后又有人提到了xfs的话怎么办,正好前几天看到Dave Chinner在邮件列表里提到了这个问题,他推荐的工具是xfs_irecover.这里就稍微总结一下Linux下误删文件如何恢复. 1. 当发现误删了文件之后,立即把文件系统卸载掉,或者remount成ro状态,就是不要再写了,让数据不要被其他数据覆盖.因为大部分文件系统在删除文件的时候只是把这个文件标记成删除,把文件所使用的数据块标记成可

Linux下误删文件恢复

资深的Linux玩家,一般不会误删文件,就算误删文件,往往提前做过备份.如果有像我一样的菜鸟误删文件并且没有备份的话该怎么办呢?我就故作高深的讲讲. 在Linux中有许多文件修复工具,在咱51cto上有大师介绍过,我就不多说,我就把我的方法介绍一下吧!我用的是debugfs工具. 具体步骤如下: 1.删除任一文件 2.查看你删除文件所在的磁盘,我的在/dev/sda2. 3.启动debugfs(在命令行输入debugfs即可),并打开删除文件所在的分区,我的是/dev/sda2 4.查找删除文件

浅析Linux文件(一)inode与block、硬链接与软链接、恢复误删文件

一.inode与block 1.inode和block概述 文件数据包括元信息与实际数据,一个文件必须占用一个inode,但至少占用一个block. 扇区:文件存储在硬盘上,硬盘的最小存储单位是扇区,每个扇区存储空间是512字节.block(块):连续的八个扇区组成一个block,block是文件存取的最小单位,用来存储文件数据.inode(索引节点):也叫i节点,用于存储文件元信息. 2.inode的理解 (1)inode包含文件元信息: 文件的字节数 文件拥有者的User ID(UID) 文

利用winhex恢复误删文件

无意中发现一款软件winhex,没想到竟然还有恢复误删文件的功能.下面让我演示如何操作吧! 首先,下载这款软件的压缩包,解压就好了,目录下有个winhex.exe,直接点击就可以运行了,如果你想删除winhex软件,容易,把整个解压的目录删除掉就OK了! 运行界面 首先,我在D盘建了个文件夹叫"测试",再建立一个文本文档叫123.txt(反正就演示,取名简单点)再瞎写些内容,保存后直接删掉,我使用的是360强力删除,也就是永久性删除,在回收站找不到的. 到此,准备工作完成. 在已经打开

git多人合作时,恢复误删文件

一开始比较慌,下意识里就想到用reset和push -f重置版本并强制推送到远程库,经过实验发现这样做只能保证自己的本地库和远程库回到之前一个版本,而其他人想通过git pull同步是无效的,远程库版本已经低于其他人的本地库版本,这时候难道让其他人都删除版本库重新从远程库克隆?得不偿失. 然后就想,能不能从之前的版本中检出这个文件,然后重新添加到版本库中?再作为一个新的提交来挽救? 经实验室可以的,过程如下: git checkout HEAD^ -- a.txt HEAD^ 代表上一次提交,

技巧之:恢复linux被误删文件(方案有3)

一.首先我们先来了解下文件删除原理: 1) linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count和i_nlink. 2)当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中.这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入.除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点. 3) 当你发

Linux中用extundelete恢复误删文件

一.实验前需知1.extundelete是一个用来恢复ext3,ext4分区文件的工具,他会利用分区中的日志信息尝试恢复被删除的文件,但是,并非每个被删除的文件都能确保被恢复,所以,重要的文件大家还是要做好备份.下面进行一个小实验模拟文件误删,使用extundelete进行恢复2.此实验需准备两块硬盘,注意不要将extundelete安装到误删文件所在的硬盘二.开始试验1.此实验需准备两块硬盘,除虚拟机原本一块硬盘,再添加一块硬盘,添加完成重启生效2.用fdisk命令给新添加的磁盘划分分区之后格

linux 恢复误删除文件

系统版本:CentOS 6.5    软件包版本:extundelete-0.2.4.tar.gz extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3,ext4文件系统下被误删除的文件 一.安装extundelete工具 1.解压软件包 #注意:解压的时候会报错,需要安装"e2fsprogs-devel"相应软件包 2.配置安装 二.准备测试环境 1.创建测试目录 如图所示,创建&q

恢复误删文件

恢复误删除文件 在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的数据遭到误删,就需要将系统进入单用户模式,并且将根分区以只读模式挂载.这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode节点中的扇区指针清零,实际文件还储存在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,这些数据就真的丢失了,恢复工具也无力回天.所以!以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,以提高恢复数据