答案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/