将 EBS 卷或快照下载到文件

将 EBS 卷或快照下载到文件

有没有办法将 EBS 卷/快照转储/保存到文件或将其挂载到当地的Linux 文件系统?

我发现只有这个老话题这个脚本它打算通过 S3 保存它,但似乎不太可靠。我还发现这个在线工具,但对我来说没用。它甚至不包含所有可用区域。

我不寻求基于 rsync 的解决方案。

我们可以直接下载EBS吗?图片或者.iso以某种方式归档dd

答案1

AWS 不提供下载或提取构成 EBS 卷的实际块设备的方法。获取副本的标准方法是使用 rsync,但由于您追求的是块级方式,本文可能会有用。

简而言之(以防上面的链接消失),在两端使用netcat和,例如;dd

在发送方(卷附加到的 EC2 实例)上:

dd bs=16M if=/dev/sda|bzip2 -c|nc receiver.example.net 19000

在接收器上(您的电脑、备份服务器等):

nc -l 19000|bzip2 -d|dd bs=16M of=/path/to/my/volume.img

这将通过端口 19000 以 16MB 压缩块的形式传输块级设备的所有内容,尽管也可以通过 ssh 进行传输,但根据其性能统计数据,速度要慢得多!当然,您还需要考虑这种方式的安全性。如果您的块设备上有敏感数据,强烈建议使用 SSH 加密或使用 VPN 隧道,传输速度减慢是合理的权衡。

另外需要注意的是,文件系统可以缓存在内存中,因此可能会导致映像损坏。在运行上述操作之前,请卸载卷(但将其保留在实例上),以确保文件系统的一致性。

要获取快照的副本,您需要从中创建一个卷,将其附加到实例,然后执行上述操作。没有其他方法可以访问快照的数据。

答案2

所有当前答案均已过时:自 2019 年底以来,AWS 提供 API 来直接访问 EBS 快照内的数据,而无需创建卷和 EC2 实例。

这些被称为EBS 直接 API而今天他们普遍适用于各个地区。AWS 甚至发布了名为“coldsnap”的独立工具它(除其他外)允许将快照下载到文件中:

coldsnap download <snapshot ID> disk.img

请注意,此 API不免费使用。在撰写本文时,每下载 1000 个区块需要支付约 0.003 美元(不同地区略有不同)。区块大小为 512 kiB,这意味着大约每下载 GiB 0.006 美元(512 kiB 只是最小值;块可能更大,在这种情况下每 GiB 的成本会更低)。

另请注意,该 API 不能在公共快照上使用。

答案3

答案4

最好尝试这个网站。使用像 winscp 这样的 ftp 客户端。 https://asf.alaska.edu/how-to/data-recipes/moving-files-into-and-out-of-an-aws-ec2-instance-windows/

相关内容