Linux 恢复误删除的文件

目标内容
恢复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 的文件系统



猜你喜欢

转载自takeme.iteye.com/blog/2361181