某些云服务商不支持将云服务器的镜像或磁盘备份下载到本地,本文将列出一些方案供参考。
思路
一般来说这里介绍的“云服务器”的定义一般是由云服务商提供的,采用虚拟化技术创建的一个“虚拟机”,该虚拟机至少拥有独立的BIOS固件、磁盘、内存和CPU资源。
普遍的云服务器操作系统分为两种:Windows Server和Linux。除了Windows Server 2003及早期版本,Windows有一套基本通用的方案供参考;Linux系统则考虑从GRUB入手修改启动方案或使用另外的机器dd过去。
当然,本文不在考虑还能另外挂载数据盘的情况,那方法简直就太多了。本文的操作前提是架构x86_64
,只有一块数据盘,能同公网通信。
Windows Server
这个方法也可以用于普通 Windows 电脑,Windows 8 以上版本就行。
下载 EasyBCD 工具,添加启动项,添加ISO启动,从另外的ISO(比如PE等)启动然后备份。
硬盘空间完全足够存放备份文件
右键
开始
按钮,计算机管理
,左侧磁盘管理
,右侧右键系统盘的白色区域,压缩卷
,在输入压缩空间量
里面输入备份文件大小的120%左右的容量,然后点击压缩
,再在空白区域创建分区。下载 Symantec Ghost 克隆软件,打开的时候会跳出
About
,点击OK
,然后在左下角列表中选择local
-Partition
-To Image
,然后选择系统盘,再下一个界面中选择需要备份的分区,可以通过卷标区别也可以通过容量来区别,按住Ctrl
可以多选,接下来选择保存位置,选择刚才创建的新分区,输入文件名然后Save
,再然后会询问是否压缩,视情况而定。备份结束后将镜像传输回本地即可。
硬盘空间不足以容纳备份文件
在其他机器上下载GhostCast工具做服务器,然后从需要备份的云服务器上将Ghost文件直接备份到另外一台服务器上即可。
Linux
这里以 Ubuntu 20.04 LTS 为例。
首先先明确你需要备份的是哪块硬盘,不推荐用df -hT
一类的命令,因为如果还有在用docker的话可能会创建很多Volume,特别的乱。
这里推荐一个命令:lsblk
,可以直接查看物理磁盘的树状分区。
1 | root@VM-16-23:~# lsblk |
上上策
直接问云服务商是否提供产品的镜像下载服务,如果有的话直接做镜像再下载就太好了
直接dump到本地
1 | ssh -C root@<remote ip> -p 22 "dd if=/dev/vda1 " | dd of=server.img status=progress |
直接在本地运行如上命令即可,速度取决于服务器上行带宽。
参数:
-C
表示压缩,会增加两边服务器的CPU负担,如果两边服务器的性能都很弱建议不开,大部分时候应该都比不压缩要快;-p
写端口号,默认是22,可以不加;dd if=
后面的参数为备份的分区或硬盘;dd of=
为备份的文件名。
本质上等同的命令(从云服务器备份到另外一个机器(Remote)上):
1 | dd bs=1M if=/dev/vdb1 | ssh -C <remote ip> -p 22 dd bs=1M of=disk.img |
参数:
bs
输入输出块大小,适量调整可以提高传输效率,可选参数,可以不加;
直接从其他ISO启动
这里使用 Clonezilla ,下载Stable
版本,然后上传到Server上,修改GRUB启动文件使其从ISO启动即可。