Amazon AWS S3 Glacier 是否支持文件库内的某种文件层次结构?
例如,在 AWS S3 中,对象通过 /
被赋予层次结构。 .例如:all_logs/some_sub_category/log.txt
我正在存储多个 .tar.gz
文件,并希望:
我无法在任何地方找到如何做到这一点。如果 S3 Glacier 内的文件层次结构是可能的,您能否提供有关如何执行此操作的简要说明?
最佳答案
Does Amazon AWS S3 Glacier support some semblance of file hierarchy inside a Vault for Archives?
不,除了“文件库内存在文件”之外,没有其他层次结构。
For example, in AWS S3, objects are given hierarchy via /. For example: all_logs/some_sub_category/log.txt
这实际上是不正确的。
S3 没有任何固有的层次结构。人物
/
与对 S3 对象的键有效的任何其他字符完全没有区别。S3 控制台——以及大多数 S3 客户端工具,包括 AWS 的 CLI——处理
/
以一种特殊的方式塑造性格。但请注意,这是客户端的事情。客户将确保列表以这样一种方式发生,即 /
正如大多数人所期望的那样,即作为“层次结构分隔符”。If file hierarchy inside S3 Glacier is possible, can you provide brief instructions for how to do so?
您需要单独跟踪您的层次结构。例如,当您在 Glacier 中存储文件时,您可以在数据库(RDS、DynamoDB 等)中写入有关该文件的元数据。
作为旁注,请注意
.tar.gz
在 Glacier 中,尤其是当您谈论 (1) 一个非常大的存档 (2) 时,该存档 (2) 由大量您可能希望单独访问的小型单个文件 (3) 组成。如果满足这些条件(根据我的经验,它们通常在现实世界中),然后使用
.tar.gz
检索数据时往往会导致成本过高。原因是因为您按请求数量和请求大小付费。所以虽然有一个巨大的
.tar.gz
文件可能会降低您在请求数量方面的成本,事实上 gzip 使用 DEFLATE,这是一种不可拆分的压缩算法,这意味着您必须检索整个 .tar.gz
存档,解压,最后得到你真正想要的文件。解决我上面描述的问题的另一种方法——同时,与你的问题和我的答案相关——实际上是首先 gzip 单个文件,然后将它们压缩在一起。这解决了这个问题的原因是,当您将文件压缩在一起时,单个文件实际上在 tarball 中有明确的界限。然后,当您请求从 Glacier 检索时,您只能请求一定范围的文件。例如,您可以说,“Glacier,给我 105MB 到 115MB 的存档 X 字节”。这样,您可以 (1) 减少请求总数(因为您只有一个 tar 文件),以及 (2) 减少请求和存储的总大小(因为您有压缩数据)。
现在,要知道您需要检索哪个范围,您需要将元数据存储在某个地方——通常是您将保留层次结构的同一个地方! (就像我上面提到的,RDS、DynamoDB、Elasticsearch 等)。
无论如何,只是一个可以在 future 节省大量资金的优化(我曾与大量客户合作,他们浪费了很多钱,因为他们不知道这一点)。
关于amazon-web-services - 亚马逊 AWS S3 冰川 : is there a file hierarchy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62096988/