检查上传到 AWS Glacier 的档案的完整性

Checking the integrity of an archive uploaded to AWS Glacier

我们每天都会创建数据库备份并将其存储在服务器上。为了释放 space,我们决定使用 AWS Glacier 存档所有超过 30 天的备份。 到目前为止一切顺利,我设法为 select 所需文件编写了一个 PowerShell 脚本并将它们上传到 Glacier,但由于我对所有 AWS 东西都不熟悉,所以我有一个问题:是否可以检查我上传的文件确实在存档中,没有信息丢失?

我的第一个方法是为我们上传的所有文件发送作业检索请求,4 小时后比较原始文件和从 Glacier 检索的文件的校验和和存档 ID。但是,我认为这个过程耗时长,需要额外的钱,最重要的是,完全没有意义..

我还发现我可以使用库存检索,但据我所知,这种方法与上述方法非常相似,只是无需再次下载所有文件。

最后,如果没有错误,是否还要尝试确保文件上传成功?我模糊的理解是,如果上传到 Glacier 失败,AWS 会返回错误消息,并且它会在上传期间在内部计算校验和。

我知道 Whosebug 已经看到了措辞更准确的问题,但如果能对此做出任何澄清,我们将不胜感激。

您必须非常努力地将损坏的文件上传到 Glacier,因为 Glacier 需要随每个 API 请求一起发送的校验和,如果它们与哈希值不匹配,它将拒绝上传。显然,您需要抽查您的档案,但由于内置保护,无需下载和验证每个档案。

请参阅 Amazon S3 Glacier 开发人员指南 中的 Computing Checksums,了解有关其工作原理的在线说明。

那么,请考虑完全不使用 Glacier……无论如何不要直接使用。使用 S3,并使用 GLACIERDEEP_ARCHIVE 存储 class 上传您的文件。或者将它们作为标准上传,并使用生命周期策略在 1 天后将它们移至存档存储 classes 之一。 (这很有用,因为如果您在最短存储时间之前删除 Glacier 或 Deep Archive 上传,您需要为整个最短时间付费...这样您就有 24 小时 "oops I don't like the way I set this up" window,因为标准存储没有最短存储时间段)。

使用 S3 是 far 更好的解决方案,因为 S3 有更好的 API 和控制台,但定价相同,因为 S3 实际上使用 Glacier 作为它的后端,而您可以利用 S3 作为前端。 Glacier 基本上没有控制台功能,非常不透明,并且并非真正为人类交互而设计——Glacier 似乎被设计为归档系统或服务的后备存储,这正是 S3 使用 Glacier 的方式。

Amazon Simple Storage Service (Amazon S3) supports lifecycle configuration on an S3 bucket, which enables you to transition objects to the Amazon S3 GLACIER storage class for archival. When you transition Amazon S3 objects to the GLACIER storage class, Amazon S3 internally uses Glacier for durable storage at lower cost. Although the objects are stored in Glacier, they remain Amazon S3 objects that you manage in Amazon S3, and you cannot access them directly through Glacier.

https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html

令人困惑和不幸的是,AWS 最近通过简化事情混淆了这个问题,将 "Glacier" 重命名为 "S3 Glacier," 就好像它们是同一件事,当它们是两种截然不同的服务时,一个其中的一种模式为您提供通往另一个的门户。 Glacier 的传统营销方式同样令人遗憾。前面没有 S3,Glacier 不太适合很多应用程序。