admin管理员组文章数量:1593159
实战:恢复ext4文件系统下误删除
在Centos6或者RHEL6上恢复ext4文件系统下误删除的文件
–>rm -Rf / #执行不成功
[root@master30 data]# rm -Rf /
rm: 在"/" 进行递归操作十分危险
rm: 使用 --no-preserve-root 选项跳过安全模式
原理:
ext4文件系统上删除文件、可以恢复:extundelete
ext3删除恢复:ext3grep
windows恢复误删除的文件:final datav2.0 汉化版和easyrecover
Linux文件系统由三部分组成:文件名、inode、block
windows也是由这三部分组成
a.txt -->inode -->block
文件名: 存放文件元数据信息 真正存放数据;
block块:真正存放数据的地方
#查看文件名
[root@master30 data]# ls -l aa.txt
-rw-r--r-- 1 root root 16 6月 12 09:41 aa.txt
[root@master30 data]# stat a.t
stat: 无法获取"a.t" 的文件状态(stat): 没有那个文件或目录
[root@master30 data]# stat aa.txt
文件:"aa.txt"
大小:16 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:50334076 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2021-06-12 09:41:12.322393075 +0800
最近更改:2021-06-12 09:41:09.424393405 +0800
最近改动:2021-06-12 09:41:09.424393405 +0800
创建时间:-
#查看inode号
[root@master30 data]# ls -i aa.txt
50334076 aa.txt
为生么删除比恢复的快?
删除aa.txt—>文件名、inode、block
其实删除的时候只是删除文件名
–>但是inode号是依然可用的;
–>如果刚删除–>但是突然有b.txt有刚好用到inode号–>恢复更加难了;
- 硬盘还是会有奇偶校验法恢复–>比较专业的数据
误删除后,第一件事需要做什么?
–>避免误删除的文件内容被覆盖;
–>卸载需要回复的分区或者以制度的方式挂载;
实战:Centos6系统在ext4文件系统上恢复被误删除的文件
1)下载extundelete
官网:https://sourceforge/projects/extundelete/
2)准备一下硬盘的基本环境
虚拟机关机–>编辑虚拟机–>添加–>硬盘–>默认,默认下一步
#查看一下硬盘
[root@master ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc
#对sdb进行分区
[root@master ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xcb3fcf18.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n #新建分区,
Command action
e extended
p primary partition (1-4)
p #这里输入新建主分区
Partition number (1-4): 1 #选择分区标号为1
First cylinder (1-2610, default 1): #选择默认上去
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G #分区大小是2G
Command (m for help): w #保存规划好的分区
#格式化分区-->创建ext4的文件系统
#Centos6使用的命令是mkfs.ext4
[root@master ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 526120 blocks
26306 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#挂载使用
[root@master ~]# mkdir /sdb1
[root@master ~]# mount /dev/sdb1 /sdb1
[root@master ~]# df -h | grep sdb1
/dev/sdb1 2.0G 3.1M 1.9G 1% /sdb1
3)准备测试数据
[root@master ~]# cd /sdb1
[root@master sdb1]# mkdir test/Linux -p
[root@master sdb1]# touch liangjiawei.txt
[root@master sdb1]# echo liangjiawei > liangjiawei.txt
[root@master sdb1]# touch empty.txt
[root@master sdb1]# tree /sdb1
/sdb1
├── empty.txt
├── liangjiawei.txt
├── lost+found
└── test
└── Linux
3 directories, 2 files
4)删除文件—>直接删除了;
如果想恢复文件、那么需要注意什么?
- 立即断电,然后把磁盘转为已读方式;
- 不要正常关机,以免系统自动读取数据保存;
- 马上准备extundelete,提前安装好,放到U盘里边;把U盘挂载到服务器,
- 恢复的时候,需要把数据先存放到U盘下;
[root@master sdb1]# rm -rf ./*
5)恢复的整体过程;
–>卸载,保证不要再有操作进去,避免数据被覆盖
[root@master sdb1]# cd
[root@master ~]# umount /dev/sdb1
–>安装extundelete工具
#上传extundelete
[root@master ~]# rz
[root@master ~]# ls extundelete-0.2.4.tar.bz2
extundelete-0.2.4.tar.bz2
#解压包
[root@master ~]# tar -xf extundelete-0.2.4.tar.bz2
[root@master ~]# cd extundelete-0.2.4
[root@master extundelete-0.2.4]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@master extundelete-0.2.4]# yum -y install e2fsprogs-devel
#预编译
#安装编译环境
[root@master extundelete-0.2.4]# yum -y install gcc gcc-c++
[root@master extundelete-0.2.4]# ./configure
Configuring extundelete 0.2.4
Writing generated files to disk
#编译
#可以跟上参数-j:指定了cpu个数,可以加速编译
[root@master extundelete-0.2.4]# make
make -s all-recursive
Making all in src
#安装
[root@master extundelete-0.2.4]# make install
Making install in src
/usr/bin/install -c extundelete '/usr/local/bin'
install和cp的区别
- install可以指定文件权限
- cp不能指定权限
[root@master extundelete-0.2.4]# cp /etc/fstab /tmp/
[root@master extundelete-0.2.4]# install -m 777 /etc/fstab /tmp/fstab.install
[root@master extundelete-0.2.4]# ll /tmp/fs*
-rw-r--r-- 1 root root 805 5月 4 17:58 /tmp/fstab
-rwxrwxrwx 1 root root 805 5月 4 17:58 /tmp/fstab.install
准备好了之后开始恢复文件
恢复文件的方式方法:
- 通过i节点进行恢复
- 通过文件名进行恢复
- 恢复某个目录,如目录a下的所有文件
- 恢复所有的文件;
#创建一个目录,用于存放恢复的数据
[root@master ~]# mkdir /recover
方法一:
#首先需要查看一下i节点
[root@master ~]# extundelete /dev/sdb1 --inode 2
.....
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11 Deleted
liangjiawei.txt 12 Deleted
empty.txt 13 Deleted
test 14 Deleted
#这里我们有两个问题,
#第一个,为什么是--inode 2
#解答如下:
ext4文件系统的分区根目录的inode值为2,xfs分区根目录的inode值为64
[root@master ~]# mount /dev/sdb1 /sdb1/
[root@master ~]# ls -id /sdb1
2 /sdb1
#通过i节点来恢复文件
#这里我们发现,恢复了的文件,它不是原来我们的文件名
#但是文件的内容都是没有变动的,说明文件是恢复成功了;
[root@master ~]# extundelete /dev/sdb1 --restore-inode 12
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 17 groups loaded.
Loading journal descriptors ... 36 descriptors loaded.
[root@master ~]# cat RECOVERED_FILES/file.12
liangjiawei
#通过文件名了恢复
[root@master ~]# extundelete /dev/sdb1 --restore-file liangjiawei.txt
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 17 groups loaded.
Loading journal descriptors ... 36 descriptors loaded.
Successfully restored file liangjiawei.txt
[root@master ~]# cat RECOVERED_FILES/
file.12 liangjiawei.txt
[root@master ~]# cat RECOVERED_FILES/liangjiawei.txt
liangjiawei
#恢复目录
#这里发现原来在test目录下的空目录不见了
[root@master ~]# extundelete /dev/sdb1 --restore-directory test
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 17 groups loaded.
Loading journal descriptors ... 36 descriptors loaded.
Searching for recoverable inodes in directory test ...
4 recoverable inodes found.
Looking through the directory structure for deleted files ...
3 recoverable inodes still lost.
[root@master ~]# tree RECOVERED_FILES/test/
RECOVERED_FILES/test/
0 directories, 0 files
#恢复所有
[root@master ~]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 17 groups loaded.
Loading journal descriptors ... 36 descriptors loaded.
Searching for recoverable inodes in directory / ...
4 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@master ~]# ls RECOVERED_FILES/
file.12 liangjiawei.txt liangjiawei.txt.v1 test/
[root@master ~]# ls RECOVERED_FILES/
file.12 liangjiawei.txt liangjiawei.txt.v1 test
#extundelete恢复的时候不能自动恢复空文件和空目录;
本文标签: 文件系统误删除extundelete
版权声明:本文标题:extundelete恢复ext4文件系统下误删除 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728151064a1147336.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论