尝试确定是否可以从 S3 中未压缩的 TAR 存档下载特定文件或字节范围。
用例可以这样描述:
理想情况下,在任何给定的时间点,我只应该在内存中打开元数据.txt文件,而不应该打开整个TAR存档或有效负载的任何部分.png。我不想仅仅因为能够读取包含的小元数据.txt文件而下载巨大的TAR存档而产生网络或内存开销。
我注意到 AWS 开发工具包中的 S3 对象输入流,但我不确定如何将其与我的使用案例的 TAR 文件一起使用。
有没有人实现过类似的东西,或者有任何指向引用的指针,我可以查看以帮助实现这一点?
是的,对于未压缩的压缩包,文件格式具有有关可用于检查其内容的文件的标头记录。
我更像是一个Python而不是一个Java的人,但是看看我在这里实现的tarball范围请求和这里的文档。
简而言之,您可以检查标头(文件名始终排在第一位,并且填充为具有NULL b“\x00”
字节的512字节块),获取与文件长度相对应的范围以确定可变长度,获取该文件长度的剩余部分512以确定文件末尾填充,然后在文件末尾之前迭代最多1024(您可以发送HEAD请求以获取总字节, 或者当您执行范围请求(又名部分内容请求)时将其发送回去)。结束前的 1024 部分是因为在 tar 存档的末尾至少有 2 个 512 字节的空块。
在迭代时,检查您希望在其中找到文件头的每个新块的文件名是否实际上都是空字节可能是明智的,因为这表明您实际上输入了一个文件块的末尾(规范似乎说“至少有2个空块”,因此可能会有更多)。但是,如果您控制生成的tar文件,可能就不需要麻烦了。
问题内容: 我有一个包含要使用tar存档的文件列表的文件。叫它吧 它包含了: 有没有一种方法可以发出作为输入的TAR命令?就像是 这样就好像我发出以下命令一样: 问题答案: 是:
问题内容: 我需要列出S3存储桶中某个文件夹中包含的所有文件。 文件夹结构如下 我有与用户有关的文件和与某个用户的联系人有关的文件。我需要同时列出两者。 要列出文件,我使用以下代码: 要列出某个用户的文件,我使用以下前缀: 并且我正确地获得了除子目录之外的目录中的所有文件,例如: 要列出某个用户联系人的文件,我使用以下前缀: 但是在这种情况下,我还将目录本身作为返回的对象: 为什么我会得到这种行为
我正在尝试创建多个文本文件的存档。有时这些文件会更新,当这些文件更新时,我使用 tar 中的 选项将这些文件附加到存档中。 假设我们有两个文件,test1.txt和test2.txt.这些文件被添加到存档test.tar. 用焦油 我得到的如预期: 现在,如果我更新test2.txt,并使用< code > tar-f test.tar-u test 2 . txt 将其添加到存档中。 我希望运行
问题内容: 我有一个s3结构,如下所示: 我需要做的就是给定s3bucket的名称和一个第一级密钥的条目,我需要位于第一级密钥下的所有第二级密钥的名称。因此,从本质上来说,如果我们将其视为一个文件夹,则将获得的名称(即)和其子文件夹之一的名称,我想列出其中的所有文件夹。虽然只是名称,而不是完整的路径。 有人可以指出如何使用亚马逊的Java SDK在Java中做到这一点吗? 谢谢 问题答案: 我做了
文件当前将转到:
我有非常大的二进制文件,其中包含y传感器的x个int16数据点,以及包含一些基本信息的头文件。二进制文件被写为每个采样时间的y值,最多x个采样,然后是另一组读数,依此类推。如果我想要所有的数据,我使用的是numpy。fromfile(),它工作得又快又好。然而,如果我只需要传感器数据的子集或特定传感器,我目前有一个可怕的double for循环,使用的是这要花很长时间。在python中有没有其他更