【发布时间】:2019-07-06 12:44:42
【问题描述】:
试图确定是否可以从 S3 中的未压缩 TAR 存档中下载特定文件或字节范围。
用例可以这样描述:
- TAR 文件由我的应用程序生成(因此我们可以控制它)
- TAR 文件位于 S3 存储桶中
- TAR 文件名为archive.tar
- TAR 文件包含两个文件:metadata.txt 和 payload.png
- metadata.txt 保证总是大小为“n”字节,其中“n”相对较小
- payload.png 可以是任意大小,因此可以是一个非常大的文件 (> 1 GB)
- 我的应用程序需要能够下载 metadata.txt 以了解如何处理 TAR 文件,并且我不希望应用程序必须仅为 metadata.txt 文件下载整个 TAR 文件
理想情况下,在任何时候,我都应该只在内存中打开 metadata.txt 文件,而不是打开整个 TAR 存档或 payload.png 的任何部分。我不想为了能够读取包含的小 metadata.txt 文件而下载巨大的 TAR 存档而产生网络或内存开销。
我注意到 AWS 开发工具包中的 S3ObjectInputStream,但我不确定如何将它与 TAR 文件一起用于我的用例。
任何人曾经实现过类似的东西或有任何指向我可以查看以帮助解决此问题的参考的指针吗?
【问题讨论】:
-
是的,您可以在“获取对象”请求中指定所需的字节范围。只要您对 TAR 文件的内容有某种索引并且它没有被压缩或加密,听起来就可以工作。
-
只有一个问题——为什么这么复杂? TAR 不压缩文件;因此,如果您需要单独处理它的内容,将这些文件放在单独的目录中并逐个处理它们非常简单。不是吗?
标签: java amazon-web-services amazon-s3 download tar