恢复测试
测试环境
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
结论
可以恢复一部分文件,并保持文件结构,但不能保证所有文件的完整性。
发表回复