我在 Amazon EC2 服务器上运行 Linux。我需要在同一可用区内的两个 EC2 系统之间复制数百万个文件,总计数百 GB。我不需要同步目录,只需将一个目录中的所有文件复制到另一台计算机上的空目录中即可。
最快的方法是什么?有人看过或运行过性能测试吗?
rsync?scp?我应该先压缩它们吗?我应该拆下它们所在的驱动器并将其重新连接到我要复制到的机器,然后再复制它们吗?通过 EC2 的私有 IP 进行传输是否会加快速度?
任何想法都将受到赞赏。
注意:抱歉,这不清楚,但我正在同一 AWS 可用区域内的两个 EC2 系统之间复制数据。
答案1
如果文件已经在 EBS 卷上(如果您关心它们,为什么它们不在?):
创建包含第一个实例上的文件的 EBS 卷的快照。
从该快照创建 EBS 卷。
将 EBS 卷附加到第二个实例。
新的 EBS 卷在从快照填充块时可能会有点慢,但它可以立即使用。
替代方案(如果文件尚未位于 EBS 卷上):
将新的 EBS 卷附加到第一个实例。
将文件从其他磁盘复制到新的 EBS 卷。
将 EBS 卷移动到第二个实例。
答案2
使用 tar 和 netcat。如果它们在同一个子网中,并且您不太关心安全性,这是一个非常巧妙的解决方案。如果您想要安全性,您可以在管道中添加内容。您可以使用 gpg,或者先使用 gzip 进行压缩
在接收端执行以下操作:
netcat -l -p 7000 | tar x
在发送端执行以下操作:
tar cf - * | netcat otherhost 7000
答案3
您可以使用 Amazon AWS 导入/导出服务。将驱动器寄给他们,让他们为您复制。价格更贵,但非常适合您需要传输大量 GB 数据而又不必等待数周才能完成任务的情况。他们的链接:http://aws.amazon.com/importexport/