[英]Amazon AWS S3 Glacier: is there a file hierarchy
Amazon AWS S3 Glacier 是否支持 Vault for Archives 中的某些文件层次结构?
例如,在 AWS S3 中,对象通过/
被赋予层次结构。 例如: all_logs/some_sub_category/log.txt
我正在存储多个.tar.gz
文件,并希望:
我在任何地方都找不到如何做到这一点。 如果 S3 Glacier 中的文件层次结构是可能的,您能否提供有关如何执行此操作的简要说明?
Amazon AWS S3 Glacier 是否支持 Vault for Archives 中的某些文件层次结构?
不,除了“档案存在于保险库中”之外,没有其他层次结构。
例如,在 AWS S3 中,对象通过 / 被赋予层次结构。 例如:all_logs/some_sub_category/log.txt
这实际上是不正确的。
S3 没有任何固有的层次结构。 字符/
与对 S3 Object 的键有效的任何其他字符绝对没有区别。
S3 控制台——以及大多数 S3 客户端工具,包括 AWS 的 CLI——以特殊的方式处理/
字符。 但请注意,这是客户端的事情。 客户端将确保列表以/
的行为方式与大多数人期望的一样,即作为“层次分隔符”。
如果 S3 Glacier 中的文件层次结构是可能的,您能否提供有关如何执行此操作的简要说明?
您需要单独跟踪您的层次结构。 例如,当您在 Glacier 中存储档案时,您可以将有关该档案的元数据写入数据库(RDS、DynamoDB 等)。
作为旁注,请注意 Glacier 中的.tar.gz
,特别是如果您正在谈论 (1) 一个非常大的存档 (2),它由您可能想要的大量小型单个文件 (3) 组成单独访问。
如果满足这些条件(根据我的经验,它们通常是在现实场景中),那么在检索数据时使用.tar.gz
通常会导致成本过高。
原因是您按请求数量和请求大小付费。 因此,虽然拥有一个巨大的.tar.gz
文件可能会降低您在请求数量方面的成本,但 gzip 使用 DEFLATE(一种不可分割的压缩算法)这一事实意味着您必须检索整个.tar.gz
存档,解压,最后得到你真正想要的一个文件。
解决我上面描述的问题的另一种方法——同时,这与你的问题和我的答案相关——实际上是首先 gzip 单个文件,然后将它们打包在一起。 解决问题的原因是,当您将文件打包在一起时,各个文件实际上在 tarball 中具有明确的界限。 然后,当您请求从 Glacier 检索时,您只能请求一定范围的存档。 例如,您可以说, “Glacier,给我档案 X 的 105MB 到 115MB 之间的字节数” 。 这样,您可以 (1) 减少请求的总数(因为您有一个 tar 文件),以及 (2) 减少请求和存储的总大小(因为您有压缩数据)。
现在,要知道您需要检索哪个范围,您需要将元数据存储在某个地方——通常是您保存层次结构的同一个地方(就像我上面提到的,RDS、DynamoDB、Elasticsearch 等)。
无论如何,只是一个可以在未来节省大量资金的优化(我曾与大量客户合作过,因为他们不知道这一点而浪费了很多钱)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.