主页 > 原创 | 学习笔记 > 备份vps硬盘镜像到本地硬盘

备份vps硬盘镜像到本地硬盘

准备停止conoha的vps,停止前备份硬盘,方便以后挂载找文件

操作流程

conoha (dd备份硬盘(50G)) --> box(高速稳定的独立服务器) (ssh读取dd输出)(可用硬盘>50G) --> 本地电脑 (从 box http下载)

conoha 已用空间只有 7G, 如果不将可用空间写0,在之后压缩时会占用很大空间。

dd if=/dev/zero of=/zero.file

命令写一个0文件占用所有的可用储存空间,等待命令出错结束后

rm /zero.file

删除文件来对硬盘可用空间写零。
由于硬盘有50G大,如果直接 dd 速度较快,有很大可能被限速,所以需要 pv 命令限制带宽速度。
首先添加 box 的公钥到 conoha,这样就可以 root 登陆 conoha
在 box 上运行下边命令,将 conoha 的硬盘拷贝到 box 的 conoha.img 文件。

ssh root@163.44.x.x -p22 "dd if=/dev/vda |pv --rate-limit 2m" | dd of=conoha.img

[推荐]或者使用如下命令先做 gzip 压缩再传输,可以减少大量的流量。

ssh root@163.44.x.x -p22 "dd if=/dev/vda | gzip -1 - |pv --rate-limit 2m" | dd of=conoha.img.gz

其中 163.44.x.x 为 conoha ip地址,-p22 中的 22 为 ssh 端口号

结束后输出为

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1696.5 s, 31.6 MB/s
6099153+22125 records in
6109798+1 records out
3128216883 bytes (3.1 GB) copied, 1702.21 s, 1.8 MB/s

使用 ls -lh 查看显示经过 写0 和 gzip 处理的镜像只有 3G,节省了大量的带宽和存储空间。

完成后测试挂载

如果使用了压缩传输,需要先解压文件

gunzip -c conoha.img.gz > conoha.img

由于备份的整个硬盘,需要添加 offset 参数来挂载镜像
查看并计算 offset

fdisk -lu conoha.img
Disk conoha.img: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006811d

     Device Boot      Start         End      Blocks   Id  System
conoha.img1   *        2048   102762495    51380224   83  Linux
conoha.img2       102764542   104855551     1045505    5  Extended
conoha.img5       102764544   104855551     1045504   82  Linux swap / Solaris

根目录在 conoha.img1, Start 为 2048, Units 为 512 所以 offset 为 2048*512=1048576。使用如下命令挂载测试

mkdir conoha
mount -o loop,offset=1048576 conoha.img conoha

使用 df -h 查看挂载情况,进入 conoha 目录查看挂载的文件。使用 umount conoha 卸载。

压缩镜像文件

注意 如果没有进行 写0的操作, zip 压缩后空间几乎不变,可能生成的文件还是 50G
为了节省空间及方便下载,将 conoha.img 进行 zip 压缩,并添加压缩密码

zip -P password conoha.img.zip conoha.img

[推荐]如果已使用gzip压缩,则可以直接以存储方式保存 zip 并添加密码。如果不需要密码,可以直接下载 conoha.img.gz 文件。
对 conoha.img.gz 文件添加zip密码

zip -0 -P password conoha.img.zip conoha.img.gz

其中的 password 为 zip压缩包密码

之后通过 http/https 下载 conoha.img.zip 本地硬盘备份。

[注] 这个方法也应该适用于其他 xen 或 kvm 架构的 vps,只需要将 dd if=/dev/vda 修改为对应的硬盘设备即可。

Tags: backup dd ssh备份硬盘 vps 挂载,硬盘镜像 硬盘备份

发表评论

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