恢复rm -rf删除的数据
注:本文演示的是ext4文件系统格式数据恢复
系统版本:ubuntu16.04
恢复数据目录:数据盘(非根)目录
恢复工具:extundelete 0.2.4 恢复所有被删除数据
ext4magic 恢复指定目录数据
一、注意事项:
- 分区状态: 在数据恢复过程中,目标分区建议使用只读模式挂载,防止数据被覆盖
- 输出目录:指定输出目录时,确保该目录有足够的空间来保存恢复的数据
- 检查权限:运行extundelete命令是,需要具体root权限,所以需要使用root或者sudo提权
- 数据完整性:需要确保数据被删除之后,无新的数据写入;并非所有的删除文件都能完全恢复,恢复成功率取决于文件被删除后分区数据的修改情况
使用extundelete 恢复所有被删除数据
1、安装extundelete
root@xxx:~# apt-get install extundelete
2、只读挂载需要恢复数据设备,避免写入新数据
root@xxx:~# umount -l /data ##卸载数据盘root@xxx:~# mount -o ro /dev/vdc /data ##只读挂载
3、获取对应目录下被删除的数据
root@xxx:~# ls -id /data/python-package ##获取被删除数据所在目录的inode
40108033 /data/python-packageroot@xxx:~# extundelte /dev/vdc --inode 40108033
4、恢复数据
root@xxx:~# mkdir /tmp/del_data ##创建数据恢复目录,需要确保该目录有足够空间存储恢复数据root@xxx:~# cd /tmp/del_dataroot@xxx:/tmp/del_data# extundelete /dev/vdc --restore-all ##此命令会恢复vdc下所有可恢复数据##验证数据恢复
root@xxx:/tmp/del_data/RECOVERED_FILES# ls -lR
.:
total 8
drwxr-xr-x 2 root root 4096 Nov 7 17:00 python-package
drwxr-xr-x 3 root root 4096 Nov 7 17:01 RECOVERED_FILES./python-package:
total 226788
-rw-r--r-- 1 root root 163225600 Nov 7 17:00 python2.7.15.tar.gz
-rw-r--r-- 1 root root 17496336 Nov 7 17:00 Python-2.7.15.tgz
-rw-r--r-- 1 root root 25067363 Nov 7 17:00 Python-3.10.2.tgz
-rw-r--r-- 1 root root 26437858 Nov 7 17:00 Python-3.11.2.tgz./RECOVERED_FILES:
total 16544
-rw-r--r-- 1 root root 16935960 Nov 7 17:01 file.40108035
drwxr-xr-x 2 root root 4096 Nov 7 17:00 python-package./RECOVERED_FILES/python-package:
total 159400
-rw-r--r-- 1 root root 163225600 Nov 7 17:01 python2.7.15.tar.gz
5、重新读写挂载磁盘,把恢复数据copy到指定目录
root@xxx:/tmp/del_data# umount -l /dataroot@xxx:/tmp/del_data# mount /dev/vdc /data root@xxx:/tmp/del_data# cp /tmp/del_data/RECOVERED_FILES/python-package/* /data/python-package/
6、常用参数解析:
--inode INODE_NUM ##显示指定inode下ino信息;extundelete --inode 12345 /dev/vdc--restore-inode INODE_NUM ##恢复特定 inode 的文件;
extundelete --restore-inode 12345 /dev/vdc--restore-file FILENAME ##恢复特定的文件或目录。FILENAME 是要恢复的文件的路径(相对于设备的根目录);
extundelete --restore-file path/to/deleted/file /dev/vdc-restore-directory DIRECTORY ##恢复特定目录下的所有文件。DIRECTORY 是要恢复的目录的路径(相对于设备的根目录);
extundelete --restore-directory path/to/deleted/directory /dev/vdc--restore-all ##恢复所有可恢复的文件;
extundelete --restore-all /dev/vdc-o DIRECTORY ##指定恢复文件的输出目录(默认 RECOVERED_FILES);
extundelete --restore-file path/to/deleted/file --output-dir /path/to/output/ /dev/vdc
三、使用ext4magic恢复指定目录的数据,通过inode递归恢复
1、安装ext4magic
root@xxx:~# apt-get install ext4magic
2、只读挂载需要恢复数据设备,避免写入新数据
root@xxx:~# umount -l /data ##卸载数据盘root@xxx:~# mount -o ro /dev/vdc /data ##只读挂载
3、获取被删除数据说在目录的inode
root@xxx:~# cd /tmp/del_dataroot@xxx:~# ls -id /data/python-package
40108033 /data/python-package
4、恢复数据
root@xxx:/tmp/del_data# ext4magic /dev/vdc -R -I 40108033参数解析:
-R:递归恢复
-I:指定inode
5、重新读写挂载磁盘,把恢复数据copy到指定目录
root@xxx:/tmp/del_data# umount -l /dataroot@xxx:/tmp/del_data# mount /dev/vdc /data root@xxx:/tmp/del_data# cp /tmp/del_data/RECOVERDIR/<40108033>/* /data/python-package/