Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 在S3到EC2之间复制数据的最快/最佳方式?_Amazon S3_Amazon Ec2 - Fatal编程技术网

Amazon s3 在S3到EC2之间复制数据的最快/最佳方式?

Amazon s3 在S3到EC2之间复制数据的最快/最佳方式?,amazon-s3,amazon-ec2,Amazon S3,Amazon Ec2,我想在S3和EC2之间传输大量数据(约30G,分为约100个文件):当我启动EC2实例时,我想尽快将数据从S3复制到EC2本地磁盘,当我完成处理后,我想将结果复制回S3 我正在寻找一种能够快速/并行地来回复制数据的工具。我有几个脚本被砍掉了,包括一个做得不错的脚本,所以我不是在寻找指向基本库的指针;我正在寻找快速可靠的东西。我认为最好使用弹性块存储来存储文件,而不是S3。EBS类似于S3上的“驱动器”,可以装入EC2实例中,而无需每次复制数据,从而允许您在EC2实例之间持久保存数据,而无需每次向

我想在S3和EC2之间传输大量数据(约30G,分为约100个文件):当我启动EC2实例时,我想尽快将数据从S3复制到EC2本地磁盘,当我完成处理后,我想将结果复制回S3


我正在寻找一种能够快速/并行地来回复制数据的工具。我有几个脚本被砍掉了,包括一个做得不错的脚本,所以我不是在寻找指向基本库的指针;我正在寻找快速可靠的东西。

我认为最好使用弹性块存储来存储文件,而不是S3。EBS类似于S3上的“驱动器”,可以装入EC2实例中,而无需每次复制数据,从而允许您在EC2实例之间持久保存数据,而无需每次向S3写入或读取数据


不幸的是,Adam的建议行不通,因为他对EBS的理解是错误的(尽管我希望他是对的,而且我自己经常认为应该这样做)。。。由于EBS与S3无关,但它只为EC2实例提供一个“外部驱动器”,这些实例是独立的,但可以连接到这些实例。您仍然必须在S3和EC2之间进行复制,即使两者之间没有数据传输成本

您没有提到您的实例的操作系统,因此我无法提供定制的信息。我使用的一个流行的命令行工具是。。。它基于Python,因此,根据其网站上的信息,它应该在Win和Linux上工作,尽管我一直在Linux上使用它。您可以轻松地快速编写一个脚本,该脚本使用其内置的“sync”命令,该命令的工作方式类似于rsync,并在每次处理完数据时触发它。您还可以仅在需要时使用递归put和get命令来获取和放置数据


有些图形工具,如Cloudberry Pro,也有一些Windows命令行选项,您可以设置调度命令。这可能是最简单的

安装s3cmd软件包为

yum install s3cmd

取决于你的操作系统

然后用这个复制数据

s3cmd get s3://tecadmin/file.txt
ls还可以列出文件


有关更多详细信息,请参见

到目前为止,AWS命令行工具中有一个sync命令,该命令应该可以实现以下功能:

启动时: aws s3同步s3://mybucket/mylocalfolder

关机前: aws s3 sync/mylocalfolder s3://mybucket

当然,解决细节总是很有趣的,例如:如何并行(你能使它更并行吗?是否能更快地处理整个设置的虚拟本质)


顺便说一句,希望你还在努力。。。或者有人是

对我来说,最好的形式是:

wget http://s3.amazonaws.com/my_bucket/my_folder/my_file.ext

PuTTy

回答得很好,但可能值得注意的是,s3cmd不支持带sync的--delete选项,这意味着如果删除源上的内容,它仍将保留在目标上:(我需要用我们的备份脚本来研究这一点。我可以发誓有某种方法——删除和同步一起工作。不过,我确实记得需要一些努力才能正确。虽然脚本在许多方面为我节省了时间!回复有点晚-我的回答不是建议使用EBS在S3和EC2之间进行复制,而是S3.我将更新以澄清。虽然这并不能真正补充这个问题的答案,但值得注意的是,我检查了我们的脚本,sync命令确实为@golja提供了一个--delete选项。然而,正确的语法是--delete removed这是一个好建议。EBS卷的一个缺点是它们只能装入在与卷运行在同一可用性区域的实例上。例如,us-east-1a中的卷不能由us-east-1b中的实例使用。因此,如果不能或不希望在该区域运行实例(由于问题或容量不足)不能使用卷。这不是EBS的工作方式。EBS不是S3上的驱动器。除非创建快照或从快照创建EBS卷,否则EBS不会将数据读/写到S3。我不是说它是S3上的驱动器,我是说它像一个驱动器-如果你想以使用驱动器的方式使用S3类存储,EBS是一个很好的选择t、 据我所知,EBS可能会失败,而s3有备份。这可能是在决定使用EBS而不是s3之前应该考虑的另一件事。
wget http://s3.amazonaws.com/my_bucket/my_folder/my_file.ext