CentOS6.5 下 extundelete回复删除的文件

Linux 下面删除文件后常用的是extundelete工具来恢复,支持ext3/4文件系统

1 安装extundelete工具(千万不要把它安装到删除文件所在的分区)

在安装extundelete之前,需要确保系统安装了e2fsprogs,e2fsprogs-libs,e2fsprogs-devel。

 yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel -y

去extundelete官网下载源码包 http://extundelete.sourceforge.net/ 最新的版本是0.2.4 。

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

编译安装该文件,如果在安装过程中遇到什么问题,可以进入解压后的文件包,仔细遇到README文件

tar xjf extundelete-0.2.4.tar.bz2 
cd extundelete-0.2.4
./configure 
make && make install

2 extundelete的实用方式

平时可以通过 --help命令查看详细的命令参数

删除数据的时候,千万不要再向文件所在的硬盘写数据,然后卸载删除数据所在的分区。如果是根分区,需要进入单用户模式,将跟分区设置为只读模式挂载。

umount /dev/partition 
mount -o remount,ro /dev/partition

创建一个模拟环境,新添加了一个硬盘sdb,然后分区,挂在到/delete目录。在/delete目录下面创建四个例子

1 空文件夹

2 空文件

3 文件夹里面有文件

4 有内容的文件

[[email protected] delete]# mkdir p
[[email protected] delete]# touch p
[[email protected] delete]# vi p1.txt
[[email protected] delete]# mkdir p1
[[email protected] delete]# cd p1
[[email protected] p1]# vi p2.txt
[[email protected] p1]# cd ..

然后删除他们

rm -rf *

卸载分区,可以通过extundelete命令查看该分区可以恢复的数据信息

[[email protected] ~]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb on /delete type ext4 (rw)
[[email protected] ~]# umount  /dev/sdb /delete/
[[email protected] ~]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

执行命令,看看该分区下面有多少文件是可以恢复的

[[email protected] ~]# extundelete /dev/sdb --inode 2
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 64 groups loaded.
Group: 0
Contents of inode 2:
0000 | ed 41 00 00 00 10 00 00 a1 a2 d6 56 a0 a2 d6 56 | .A.........V...V
0010 | a0 a2 d6 56 00 00 00 00 00 00 02 00 08 00 00 00 | ...V............
0020 | 00 00 00 00 17 00 00 00 21 22 00 00 00 00 00 00 | ........!"......
0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 4c c1 15 de 4c c1 15 de 40 7a 87 e9 | [email protected]
0090 | 1a 0d d5 56 00 00 00 00 00 00 00 00 00 00 00 00 | ...V............
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1456906913
Creation time: 1456906912
Modification time: 1456906912
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 2
Blocks count: 8
File flags: 0
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 8737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11             Deleted
p                                                 131073         Deleted
p1                                                393217         Deleted
p1.txt

然后执行整个分区恢复 或者单个文件恢复

按照inode恢复文件

extundelete  /dev/sdb --restore-inode 393217

按照文件名恢复

extundelete  /dev/sdb --restore-file p1.txt

恢复整个目录

extundelete  /dev/sdb --restore-directory /p

恢复所有该分区删除的文件

extundelete  /dev/sdb --restore-all

恢复的文件会在当前目录下面创建一个 RECOVERED_FILES文件

[[email protected] ~]# extundelete  /dev/sdb --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 64 groups loaded.
Loading journal descriptors ... 61 descriptors loaded.
Searching for recoverable inodes in directory / ...
5 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[[email protected] ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  RECOVERED_FILES
[[email protected] ~]# cd RECOVERED_FILES/
[[email protected] RECOVERED_FILES]# ls
p1  p1.txt
[[email protected] RECOVERED_FILES]# tree
.
├── p1
│   └── p2.txt
└── p1.txt

可以发现空目录和空文件都是无法恢复。

时间: 2024-10-20 15:45:33

CentOS6.5 下 extundelete回复删除的文件的相关文章

Linux下两种删除过期文件的方法详述

一.概述 在实际的C软件开发项目中,不同的软件会在不同的目录中生成文件,由于磁盘的存储空间有限,开发人员不得不考虑对目录下的过期文件进行删除.一般说来,有两种删除过期文件的方法,一种是在C程序中实现,一种是利用crontab实现.本文对这两种方法的具体实现进行详细的介绍. 为了便于说明,本文中的过期文件的后缀为.c,存放在/home/zhou/zhouzx/Test目录下,过期时间为1天. 二.在C程序中实现过期文件删除 在该方法中,我们要考虑的主要问题为: (1)要删除过期多久的文件?文件存放

Linux ext4文件系统下 extundelete 恢复 误删除的文件

1.文件基本操作 1.1 查看文件 # ls   1.2 创建 1.2.1 创建文件 # touch {file_name} # vim {file_name}   1.2.2 创建目录 # mkdir -p {dir}   1.3 复制 1.3.1 复制文件 # cp {src_file} {dest_file}   1.3.2 复制目录 # cp -r {src_dir} {dest_dir}   1.4 删除 1.4.1 删除文件 # rm {file_name}   1.4.2 删除目录

centos下无法直接删除乱码文件及文件夹解决方案

不知道怎么回事今天在系统上发现有一个名字为"\"的文件,使用rm -f \ 无法删除,最后没办法只能使用文件的inode号进行删除,以下是相关步骤: [[email protected] ~]$ ls -iltotal 3211883412 -rw-r--r-- 1 oracle dba  254 Jan 31 19:21 \ [[email protected] ~]$ find ./ -inum 11883412./\ [[email protected] ~]$ find ./

Linux 下Shell脚本删除过期文件

在写这个shell之前先说一下,stat命令的使用方法 一.关于时间戳 每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:   Access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文

Linux下清空或删除大文件内容的5种方法

在Linux终端下处理文件时,有时候我们想要直接清空文件的内容时但又不用使用任何Linux命令行编辑器,去打开这些文件.那如何才能达到这个目的呢? 1.通过重定向到NULL来清空文件内容 清空或者让一个文件成为空白的最简单方式,是像下面那样,通过 shell 重定向 null 到该文件: 先看文件 access.log 的大小: 开始执行如下命令清空文件: 文件大小变为了0 2.通过 true 命令重定向来清空文件 下面将使用 : 符号,他是 shell 的一个内置命令,等同于 true 命令,

(总结)Linux下使用rsync最快速删除海量文件的方法

昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用.这个时候,我们常用的删除命令rm -fr * 就不好用了,因为要等待的时间太长.所以必须要采取一些非常手段.我们可以使用rsync来实现快速删除大量文件. 1.先安装rsync:yum install rsync2.建立一个空的文件夹:mkdir /tmp/test3.用rsync删除目标目录:rsync --delete-before -a -H -v --progress -

Linux下的删除过期文件操作

在实际的软件开发项目中,经常会有实现删除过期文件的需求.即要求程序能够自动删除多长时间之前生成的文件.本文提供了一个示例代码,为相关的开发工作提供了参考. 程序如下(本程序用makefile进行编译): /*********************************************************************** 版权所有 (C)2014, Zhou Zhaoxiong.* * 文件名称: TestFileDelete.c* 内容摘要: 用于演示Linux下过期

Linux下删除乱码文件

Linux下删除乱码文件: 1. ls -i 列出文件的节点ID, 如: 123456789 2. find ./ -inum 123456789 -print -exec rm -rf {} \; 批量删除: for n in 123456789 987654321;do find . -inum $n -exec rm -f {} \;;done

删除某个文件夹下的所有文件

//删除本地文件夹下保存的文件 NSFileManager *fileManager = [NSFileManager defaultManager];                     NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];                     NSString *dicrector