如何从虚拟机快照中恢复自己想要的文件?
早前有个centos的vps,折腾软件的时候,莫名其妙崩了,导致没法开机了,多次重启无果,无奈只能先备份,重装系统。
但是原始的系统里面还是有一些比较重要的数据,后续找了一圈怎么恢复快照里面的数据,google了很多都没相关的解决方案。
后续搜到一个类似情况的解决案例,参照相关步骤,虽然折腾了一段时间,好在最终数据全保住了,在此对原作者表示感谢。
快照本身下载下来时大约1G左右,快照为整个系统的所有文件,解压出来好几个G,由于vps磁盘空间较小,具体的操作均在本地的ubuntu虚拟机里面执行。
准备工作:
- 1、启动正常的ubuntu虚拟机
- 2、下载好对应的快照文件为snapshot****.tar.gz
- 3、安装kpartx (Create device maps from partition tables)
具体的操作流程:
- 1、解压下载的快照文件
tar -zxvf snapshot-**.tar.gz 解压后的文件为vm.disk文件 - 2、losetup -f 查看哪个loop设备是空闲的
输出信息如下:
/dev/loop0 loop0这个设备是空闲的
losetup /dev/loop0 vm*****.disk
kpartx -av /dev/loop0
输出信息如下:
add map loop0p1_
add map loop0p2_
查看信息在哪个区,一般是大小比较大的那个,比如loop0p2中包含了etc、root等系统目录等.
3、把loop0p2 挂载到 /mnt
mount /dev/mapper/loop0p2 /mnt
然后就可以在虚拟机的mnt目录去查找自己想要的数据了。4、数据复制完成后卸载镜像
umount /mnt
kpartx -dv /dev/loop0
losetup -d /dev/loop0