【问题标题】:How to extract and stream .tar.xz directly to s3 bucket without saving locally如何在不本地保存的情况下直接提取 .tar.xz 并将其流式传输到 s3 存储桶
【发布时间】:2019-08-19 18:49:35
【问题描述】:

我有一个非常大 (~300GB) 的 .tar.gz 文件。提取它后(使用 tar -xzvf file.tar.gz),它会产生许多 .json.xz 文件。我希望提取原始 json 文件并将其上传到 s3 而不在本地保存(因为我没有空间来执行此操作)。我知道我可以启动一个具有足够空间的 ec2 实例来提取和上传文件,但我想知道如何(或是否)可以直接完成。

我尝试过各种版本的 tar -xzvf file.tar.gz | aws s3 cp - s3://the-bucket,但这仍在本地提取;此外,它似乎会生成 json.xz 文件,而不是原始 json。我已尝试调整来自 this question 的回复,该回复会压缩并上传文件,但尚未取得任何成功。

我正在使用 Ubuntu16.04 并且对 linux 很陌生,因此非常感谢任何帮助!

【问题讨论】:

    标签: bash amazon-web-services amazon-s3 aws-cli


    【解决方案1】:

    我想我会这样做。可能有更优雅/高效的解决方案:

    tar --list -zf file.tar.gz | while read -r item
    do
        tar -xzvfO file.tar.gz $item | aws s3 cp - s3://the-bucket/$item
    done
    

    因此,您正在迭代存档中的文件,将它们一个接一个地提取到标准输出,然后直接将它们上传到 S3,而无需先进入磁盘。

    这假设您的tar 文件中的项目名称没有什么好笑的(没有空格等)。

    【讨论】:

    • 谢谢。我需要的唯一更改是 -f 标志需要放在最后;这最终对我不起作用,但似乎是将大文件上传到 s3 而不是您的解决方案的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多