我有相当多的数据(~30G,分成~100个文件)我想在S3和EC2之间传输:当我启动EC2实例时,我想将数据从S3复制到我尽可能快地使用EC2本地磁盘,当我完成处理时,我想将结果复制回S3。
我正在寻找一种能够来回快速/并行复制数据的工具。我有几个被破解的脚本,包括一个做得不错的工作,所以我不是在寻找基本库的指针;我正在寻找快速可靠的东西。
答案 0 :(得分:33)
不幸的是,亚当的建议不会起作用,因为他对EBS的理解是错误的(虽然我希望他是对的,并且经常认为自己应该这样做)...因为EBS与S3无关,但它会仅为EC2实例提供“外部驱动器”,这些实例是独立的,但可连接到实例。您仍然需要在S3和EC2之间进行复制,即使两者之间没有数据传输成本。
您没有提及您的实例的操作系统,因此我无法提供量身定制的信息。我使用的一个流行的命令行工具是http://s3tools.org/s3cmd ...它基于Python,因此,根据其网站上的信息,它应该适用于Win和Linux,尽管我一直在Linux上使用它。您可以轻松地创建一个快速脚本,该脚本使用其内置的“sync”命令,该命令与rsync类似,并在每次处理完数据时触发。您还可以使用递归put和get命令仅在需要时获取和放置数据。
还有像Cloudberry Pro这样的图形工具,它们也有一些Windows命令行选项,您可以设置计划命令。 http://s3tools.org/s3cmd可能是最简单的。
答案 1 :(得分:2)
到目前为止,AWS Command行工具中有一个sync命令可以解决这个问题:http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
启动时: aws s3 sync s3:// mybucket / mylocalfolder
关机前: aws s3 sync / mylocalfolder s3:// mybucket
当然,细节总是很有趣,例如。它是如何并行的(并且你可以使它更加平行,并且更快的是整个设置的虚拟性质)
顺便说一句,希望你还在努力......或者有人。 ;)
答案 2 :(得分:1)
我认为使用Elastic Block Store来存储文件而不是S3可能会更好。 EBS类似于S3上的“驱动器”,可以安装到您的EC2实例中,而无需每次都复制数据,从而允许您在EC2实例之间保留数据,而无需每次都写入或读取S3。
答案 3 :(得分:1)
将 s3cmd 包安装为
yum install s3cmd
或
sudo apt-get install s3cmd
取决于您的操作系统
然后使用此
复制数据s3cmd get s3://tecadmin/file.txt
也可以列出文件。
更多detils请参阅this
答案 4 :(得分:0)
对我来说,最好的形式是:
wget http://s3.amazonaws.com/my_bucket/my_folder/my_file.ext
来自PuTTy