New on NodeSeek? Please read our Community Rules.
一种通过dd便捷地全盘备份kvm机器的方法
晚上打算在机器A上装些软件,但又担心装完后没成功把之前的软件环境弄乱,因此在一些不怎么用的机器上折腾了下备份还原,总结成本帖。
为了在机器A上备份,需要另一台机器B,不一定要服务器,可以是你本地机器。如果是本地windows机器,建议在git bash上运行命令,git bash可以在这里下载。
首先,为了避免出现数据不一致的问题,备份和还原都要在A机器处于救援模式下,也就是需要先把A机器重启到救援模式,一般商家都提供这个基础功能的。这点麻烦相比重装很多软件来说要小得多,如果你觉得这一步太麻烦,那么可以退出本帖了 因为我测试开机状态下热备份会随机出现还原时无法开机的情况,如果你有好的解决思路可以留言讨论
机器A处于救援模式下,判断硬盘
首先,使用 fdisk -l
查看挂载的硬盘,比如 /dev/sda
/dev/vda
/dev/hdb
等,一般都是最大的那一个,根据容量很容易判断。这里假设是sda,注意不是sda1之类的,带数字的是分区
备份
A机器进救援模式,判断硬盘,在B机器执行命令
# server_ip 替换成机器A的ip
ssh -p 22 [email protected]_ip "dd if=/dev/sda bs=32M status=progress | gzip -1 - " > backup.gz
还原
A机器进救援模式,判断硬盘,在B机器执行命令
# server_ip 替换成机器A的ip
dd if=./backup.gz bs=32M status=progress | ssh -p 22 [email protected]_ip "gzip -d | dd of=/dev/sda ; reboot"
注意,还原的进度条跑完可能会在最后99%卡一会,很正常这是因为很多0x00字节需要填充到硬盘
dd有风险,在实际进行还原操作前一定要确认命令没问题
Comments
学习了
好帖帮顶
谢谢分享
如何在b机器还原呢?
好文帮顶
A -> C -> B
@captainZ #4
提问的很好,我发现自己写的不够清楚,修改了
备份和还原命令都是在B机器执行的,B机器可以是本地机器,不需要公网ip
备份是备份到B机器的,还原是从B机器推到A机器
好贴
这是d到内存保存为文件么?这只有独服大内存或双盘能行,vps撑不下
nc就不用保存文件
甲骨文怎么进救援模式?
重启的时候,在VNC中按esc,进入的界面是救援模式吗?