Linux数据恢复测试

恢复测试

测试环境

root@my-test:~# uname -a
Linux my-test 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

查看磁盘

root@my-test:~# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  40G  0 disk 

创建数据盘,挂载数据盘

# 默认的mbr盘,创建个vdb1分区
fdisk /dev/vdb
n
p
回车
回车
w


#格式化为ext4
mkfs.ext4 /dev/vdb1



#临时挂载数据盘
mkdir /cjdata
mount /dev/vdb1 /cjdata



[root@my-test /]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  3.7G     0  3.7G   0% /dev
tmpfs          tmpfs     3.8G     0  3.8G   0% /dev/shm
tmpfs          tmpfs     3.8G  424K  3.8G   1% /run
tmpfs          tmpfs     3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/vda1      ext4       50G  6.9G   40G  15% /
tmpfs          tmpfs     761M     0  761M   0% /run/user/0
/dev/vdb1      ext4       40G   24K   38G   1% /cjdata

数据恢复准备

参考: http://blog.itpub.net/69955379/viewspace-2669361/

参考: https://help.aliyun.com/noticelist/articleid/13114043.html

参考: https://ext4.wiki.kernel.org/index.php/Undeletion

参考: https://extundelete.sourceforge.net/

模拟在数据盘存放文件

mkdir -p /cjdata/vivachekcloud/
scp root@ole12138.top:/cjdata/vivachekcloud/jdk.tar.gz /cjdata/vivachekcloud/
cd /cjdata/vivachekcloud
tar -zxvf ./jdk.tar.gz
ls

解压了一个jdk文件夹,里面是jdk。

模拟误删数据盘文件夹

rm -rf /cjdata/vivachekcloud/jdk

非数据盘,创建一个目录,用于存放恢复软件及恢复的数据

mkdir /recovery
cd /recovery

恢复

备份数据盘


mount -o remount,ro /dev/vdb1

mount |grep vdb1

cd /recovery
dd bs=4M if=/dev/vdb1 of=vdb1.backup
tar -czvf vdb1.backup.tar.gz ./vdb1.backup

If lsof doesn’t find your file, then immediately remount the partition read-only: 如果 lsof 找不到您的文件,则立即以只读方式重新挂载分区: $ mount -o remount,ro /dev/partition or unmount the partition: 或卸载分区: $ umount /dev/partition Typically, you would replace “partition” in the above examples by a device name like “sda4” or “hdb7”. When either of those commands successfully completes, you can now take the next steps leisurely – you will no longer make anything worse by waiting. 通常,您可以将上述示例中的“分区”替换为“sda4”或“hdb7”等设备名称。当这些命令中的任何一个成功完成时,您现在可以悠闲地执行后续步骤 – 等待不会再让事情变得更糟。 If you would like to make a backup of your partition, you may do so by a command such as: 如果您想备份分区,可以通过以下命令来完成:

安装恢复软件

apt update
apt install extundelete

恢复数据

cd /recovery
extundelete /dev/vdb1 --restore-all

# 恢复的所有文件在当前目录的RECOVERED_FILES/文件夹下
cd /recovery/RECOVERED_FILES/vivachekcloud/jdk

恢复可读写

mount -o remount,rw /dev/vdb1

重新解压生成一份数据文件,比较一下

cd /cjdata/vivachekcloud/
tar -zxvf ./jdk.tar.gz



root@my-test:/cjdata/vivachekcloud# ls /cjdata/vivachekcloud/jdk
bin  COPYRIGHT  db  include  javafx-src.zip  jre  lib  LICENSE  man  README.html  release  src.zip  THIRDPARTYLICENSEREADME-JAVAFX.txt  THIRDPARTYLICENSEREADME.txt
root@my-test:/cjdata/vivachekcloud# ls /recovery/RECOVERED_FILES/vivachekcloud/jdk/
bin  COPYRIGHT  db  include  javafx-src.zip  jre  lib  LICENSE  man  README.html  release  src.zip  THIRDPARTYLICENSEREADME-JAVAFX.txt  THIRDPARTYLICENSEREADME.txt



root@my-test:/cjdata/vivachekcloud# diff -r /cjdata/vivachekcloud/jdk /recovery/RECOVERED_FILES/vivachekcloud/jdk/
Only in /cjdata/vivachekcloud/jdk/bin: ControlPanel
Only in /cjdata/vivachekcloud/jdk/jre/bin: ControlPanel
Only in /cjdata/vivachekcloud/jdk/jre/lib/amd64/server: libjsig.so
Only in /cjdata/vivachekcloud/jdk/jre/lib: applet
Only in /cjdata/vivachekcloud/jdk/jre/lib/security: trusted.libraries
Only in /cjdata/vivachekcloud/jdk/lib/missioncontrol/p2/org.eclipse.equinox.p2.engine/profileRegistry/JMC.profile: .data
Only in /cjdata/vivachekcloud/jdk/lib/missioncontrol/p2/org.eclipse.equinox.p2.engine/profileRegistry/JMC.profile: .lock
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/platform: .lastModified
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/profiler: .lastModified
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-api-visual.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-core-execution.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-core-io-ui.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-core-output2.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-lib-uihandler.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-core-kit.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-favorites.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-options-keymap.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-print.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-spi-actions.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-templates.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-netbeans-modules-uihandler.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-openide-compat.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-openide-execution.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-openide-options.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm/config/Modules: org-openide-util-enumerations.xml_hidden
Only in /cjdata/vivachekcloud/jdk/lib/visualvm/visualvm: .lastModified
Only in /cjdata/vivachekcloud/jdk/man: ja

结论

可以恢复一部分文件,并保持文件结构,但不能保证所有文件的完整性。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注