目标内容

恢复Linux下误删除的文件

1.恢复Linux下误删除的文件

删除文件和文件夹

rm -rf  文件名或目录名

 -r  递归删除(可以删除目录和目录里面的东西)

 -f  强行删除

ext4文件系统上删除文件,可以恢复: extundelete

windows恢复误删除的文件:  final data v2.0 汉化版  和  easyrecovery 

Linux文件系统由三部分组成:文件名,inode(索引节点),block(块)

a.txt           inode              block

文件名    存放文件元数据信息       真正存放数据

查看文件inode号:

[root@xuegod72 mnt]# ls -i a.txt

查看inode中的文件属性;  通过stat命令查看inode中包含的内容

[root@xuegod72 mnt]# stat a.txt

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

块大小是可以改变的

假设我们的块大小为 2M,而我们现在的数据为101M ,那么我们需要多少个块呢?

101/2 需要50还是51个块

UMOUNT

如何避免误删除的文件内容被覆盖???

卸载需要恢复文件的分区:或以只读的方式挂载

下载extundelete

http://sourceforge.net/    开源软件发布中心

准备测试分区:

[root@localhost ~]# fdisk /dev/sdb

输入

n:新建

p:主分区

1:分区号

w:保存

[root@localhost ~]# ls /dev/sdb*

[root@localhost ~]# partx -a /dev/sdb  #获得新分区表

[root@localhost ~]# mkfs.ext4 /dev/sdb1

挂载

[root@localhost ~]# mkdir /sdb1

[root@localhost ~]# mount /dev/sdb1 /sdb1

[root@localhost ~]# df -Th |tail -1

复制一些测试文件,然后把这些文件再删除:

[root@localhost ~]# cp /etc/passwd /sdb1

[root@localhost ~]# cp /etc/hosts /sdb1

[root@localhost ~]# echo aaa > a.txt

[root@localhost ~]# mkdir -p /sdb1/a/b/c

[root@localhost ~]# cp a.txt /sdb1/a/

[root@localhost ~]# cp a.txt /sdb1/a/b/

[root@localhost ~]# touch /sdb1/a/b/kong.txt

安装tree命令:

[root@localhost Packages]# rpm -ivh tree-1.5.3-2.el6.x86_64.rpm

[root@localhost Packages]# tree /dev/sdb1      #采用树显示 /dev/sdb1中的文件目录

删除文件并卸载分区:

[root@localhost sdb1]# pwd

/sdb1

[root@localhost sdb1]# ls

a  hosts  lost+found  passwd

[root@localhost sdb1]# rm -rf a passwd hosts

[root@localhost sdb1]# ls

lost+found

如何避免误删除的文件内容被覆盖???

卸载需要恢复文件的分区(卸载当前目录必须退出当前才行):或以只读的方式挂载

[root@localhost sdb1]# cd ..

[root@localhost sdb1]# umount /dev/sbd1

从windows上传extundelete文件到linux,安装xmanager或者CRT

解压并安装extundelet

[root@localhost ~]# ls

[root@localhost ~]# tar jxf extundelete-0.2.4.tar.bz2

[root@localhost ~]# cd extundelete-0.2.4

[root@localhost extundelete-0.2.4]# rpm -ivh /media/RHEL_6.5\ x86_64\ Disc\

[root@localhost extundelete-0.2.4]# ./configure

[root@localhost extundelete-0.2.4]# make && make install

 make:编译,把源代码编译成可执行的二进制文件

 make install 安装

开始恢复

可以通过以下几种方法来进行恢复:

 通过inode节点恢复

 通过文件名恢复

 恢复某个目录,如目录a下的所有文件:

 恢复所有的文件

[root@localhost ~]# mkdir /test          #创建一个目录用来存放恢复的数据和目录

[root@localhost ~]# cd /test/

首先先查看一下删除文件的节点号

[root@xuegod63 ~]# extundelete /dev/sdb1 --inode 2

方法1:通过inode节点恢复

[root@localhost test]# extundelete --restore-inode 12 /dev/sdb1    #12为上一步中inode

[root@localhost test]# ls    #查看恢复的文件

RECOVERED_FILES

如何查看恢复后的文件和原来的文件一致呢?我们可以用diff命令

[root@localhost RECOVERED_FILES]# diff file.12 /etc/passwd

[root@localhost RECOVERED_FILES]#                 #没有任何输出,说明结果一样

方法二,通过文件名恢复

[root@localhost test]# extundelete --restore-file passwd /dev/sdb1

[root@localhost test]# ls

RECOVERED_FILES

[root@localhost test]# cd RECOVERED_FILES/

[root@localhost RECOVERED_FILES]# diff passwd /etc/passwd

方法三:恢复某个目录,如目录a下的所有文件:

[root@localhost test]# extundelete --restore-directory a /dev/sdb1

[root@localhost test]# ls RECOVERED_FILES/

a  file.12  passwd

[root@localhost test]# cd RECOVERED_FILES/

[root@localhost RECOVERED_FILES]# ls

a  file.12  passwd

[root@localhost RECOVERED_FILES]# tree a

方法四:恢复所有的文件

[root@localhost test]# extundelete --restore-all  /dev/sdb1

[root@localhost test]# ls RECOVERED_FILES/

a  file.12  hosts  passwd  passwd.v1

extundelete在恢复文件的时候能不能自动创建空文件和目录?

答:不能。

REHL7  xfs系统  可以的

使用 xfsdump 时,请注意底下的限制:

xfsdump 不支援没有挂载的文件系统备份!所以只能备份已挂载的!

xfsdump 必须使用 root 的权限才能操作 (涉及文件系统的关系)

xfsdump 只能备份 XFS 文件系统啊!

xfsdump 备份下来的数据 (档案或储存媒体) 只能让 xfsrestore 解析

xfsdump 是透过文件系统的 UUID 来分辨各个备份档的,因此不能备份两个具有相同 UUID 的文件系统