备份:使用Amazon S3或Glacier备份大量小文件?

33

我正在努力理解复杂的亚马逊冰川(Amazon Glacier)定价模式。我不想存储大量数据,只需要几个GB,比如说10个。我希望永远不需要下载文件,但如果确实需要,我也不关心需要多长时间。

每上传一个文件是否都有成本?是把许多小文件压缩成几个块上传更便宜,还是像10,000张图像这样的大量文件无所谓?(在搜索过程中无法获得明确的答案)

我是否能够请求整个归档/存储桶的下载,还是必须逐个文件下载?

4个回答

45

我知道这篇文章有点旧,但我希望我的回答仍然对你有所帮助。另一个回答基于S3,我认为这不是你的问题。

Glacier适用于罕见文件访问。考虑到这一点,如果您需要同时检索多个文件,他们会对您进行惩罚。在您的情况下,我建议上传10,000个单独的文件而不是例如100个ZIP文件,每个ZIP文件有100个文件。原因非常简单。Glacier只允许您免费下载存档的5%,并且每日按比例计算。因此,例如,如果您需要下载周末拍摄的10张照片,则如果它们分散在保险库中,您将能够免费获取这些10张照片。另一方面,如果您有一个包含100张照片的ZIP文件,您将被迫下载该ZIP文件,该ZIP文件可能超过总存档量的5%,这意味着您将为检索付费。

上传较少的文件的唯一原因是避免高上传请求(通常10,000个文件意味着10,000个请求)。请求费用为每1000个请求0.05美元。这些费用要低得多(考虑到所施加的限制),这就是为什么我总是建议上传单独的文件。当然,您可以将有意义的文件压缩在一起。

Amazon Glacier的检索成本非常复杂。这里有一个很好的解释: http://aws.amazon.com/glacier/faqs/#How_much_data_can_I_retrieve_for_free 但即使在那里,您也需要注意计算,以清楚地了解如何计费。

关于这个问题: 我能否请求整个存档/存储桶的下载,还是逐个文件进行?

请求是逐个文件进行的,尽管您可以选择许多文件并将它们一起下载。

决定使用S3还是Glacier取决于您对文件访问的需求。如果您很少需要访问文件,则Glacier是您的选择。否则,对于10GB的文件,S3仍然比Glacier更便宜和更灵活。

在我的情况下,我发现家庭照片是非常珍贵的东西。这就是为什么我在Glacier中备份了100GB的所有家庭照片。除非家里发生了某种灾难,否则我不打算访问它。在那种情况下,如果这可以拯救我真正关心的东西,我认为我不介意检索成本。但那只是我的想法。


亚马逊在过去几年中改变了S3 Glacier的定价。据我所知,免费检索已不再可用。 - undefined

37

这里提供了S3的详细定价信息。可以在这里找到可用API功能的具体内容。

对于S3,您主要需要支付上传带宽(发送到S3的字节数),下载带宽(从S3接收的字节数)和存储费用(存储在S3中的字节数)。您还需要支付API调用的数量和类型所收取的费用。

因此,如果您将10 GB的数据以10,000个1 MB文件的方式上传到S3,并存储一个月,然后将每个文件下载一次,则会产生以下收费:

  • 上传带宽费用为$0.00(免费)
  • 上传10,000个PUT请求的费用为$0.10
  • 存储10 GB一月的费用为$0.95
  • 下载10 GB带宽的费用为$1.08(第一个免费,然后每GB收取$0.12)
  • 下载10,000个GET请求的费用为$0.01

总共为$2.14。如果您仅上传和下载一次,但保留数据一年,则只有存储费用会增加到12 * $0.95,即$11.40。如果您的文件平均大小仅为100 KB,因此有100,000个文件,则PUT和GET请求费用将增加10倍,即由$0.11变为$1.10。

每次操作只能上传和下载单个文件。如果将文件合并为一个Zip文件,则只需使用较少的操作即可节省费用,而这些操作本来就很便宜。

这里有一个问题需要注意。我相当确定您上传和下载时所有带宽使用都会被计费,包括请求头部,并不仅限于包含数据的主体。因此,如果您的文件非常小,则请求头可能会变得很重要,甚至可能与文件本身一样大。在这种情况下,您的带宽成本将翻倍。

Glacier的价格更为复杂,我自己从未使用过它。基本上,它将存储成本降低了近十倍,保持其他成本不变,并在每个对象的归档和恢复中增加成本。如果您有许多小对象、需要一次获取大量文件或经常获取文件,则这些成本似乎是相当可观的。Glacier在您拥有大量数据(不仅仅是几十GB,而是数TB)但操作较少时表现最佳。鉴于您只有10GB的数据,S3如此便宜,以至于没有必要考虑Glacier。

最后,AWS的首年有免费使用额度,看起来可以涵盖除一半的存储费用以外的所有费用。


即使考虑到Glacier,每年低于15美元有点吝啬。那么使用Glacier,您只能一次请求一个文件,并按此方式付费...肯定可以整个归档吧? - Markive
也许自2013年以来情况有所改变,但查看https://aws.amazon.com/s3/pricing/,似乎上传没有传输费用。也许可以重新表述答案中的这个句子:“对于S3,您主要需要支付上传带宽费用(发送到S3的字节数)...”。 - Erik Sjölund

4

使用较少的大文件比使用许多小文件更好

将文件放入Amazon Glacier有两种方法。您可以直接与保险库交互,也可以使用S3作为前端。

我使用S3(和Amazon管理控制台),这样我就能够查看归档内容,并便宜地存储在Glacier中。

这种方法有一个缺点-由于在Glacier中存储任何信息都会产生一些数据开销(您也要为此付费),因此逻辑上存在一个收支平衡点。在2014-04价格下调之前,我进行了计算,关键大小约为16 kB,使用AWS S3作为前端将较小的文件存储在Glacier中的成本更高,而仅在S3上保留它则更加便宜。随着S3存储价格的下调(Glacier没有变化),收支平衡点变得更高了。

我想,即使没有S3作为前端,情况也会类似,尽管对于较小的文件更加友好。


我同意大文件的想法,但不是出于你提供的原因。Glacier最好被视为最后的备份。只有在所有其他备份失败并且那些备份更容易访问时,您才会检索文件。 (存储在离岸的硬盘驱动器,DVD等)。因此,检索成本无关紧要,因为在您遭受全面灾难时支付检索费用不是问题。问题在于上传的可靠性。对于数千个文件,管理校验和以验证上传是否正常是不切实际的。 - Marc Rochkind
@MarcRochkind 这个问题是关于成本的,忽略成本方面就是忽略了问题。同时请注意,我所说的不是检索成本,而是存储成本 - 它们有一个盈亏平衡点。如果一个人不在意成本,那么我建议使用AWS S3,因为它比Amazon Glacier更容易处理。 - Jan Vlcinsky

2

自2016年11月21日以来,亚马逊更新了冰川检索的免费套餐政策,并取消了“平均每月存储量的5%”政策,改为每月免费提供固定的10GB。但是,如果您在那天之前设置了检索政策,则仍然适用“5%”政策,这里的其他答案仍适用于您。

如果您的检索策略是在2016年11月21日之后设置的,并且您处于OP的境地:

您只存储了10GB,因此可以使用标准检索每月免费检索所有数据一次。无论所有10,000张照片是否已压缩成一个zip文件(用于检索),都不会有任何影响。

此情况下唯一的变量是上传请求的数量。以每1,000个价格为$0.05计算的10,000个请求仅需支付$0.50,并且这是您特定情况下的一次性费用。

更多定价信息请参见AWS Glacier FAQ

更新:

Glacier文档建议在上传超过100MB的文件时使用分块上传。

在尝试上传一个8GB文件时,我独立得出了这个结论,因为出现了几次超时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接