【问题标题】:Preserve metadata when uploading multiple files to an Amazon S3 bucket using AWS CLI使用 AWS CLI 将多个文件上传到 Amazon S3 存储桶时保留元数据
【发布时间】:2021-12-06 06:37:35
【问题描述】:

我有一个需要上传到 s3 存储桶(100,000 多个文件)的客户端的文件存档。从那里,这些文件需要在他们的网站上列出并可供下载。

我上传的文件必须保留“创建日期”或“修改日期”元数据,以便在文件的原始创建日期列出这些文件。 User-defined metadata也可以,只要上传后能得到数据即可。

我尝试在 AWS CLI 上使用以下命令作为测试:

aws s3 cp test.pdf s3://test-bucket/ --metadata-directive COPY

但是它不保留原始元数据。 COPY 命令有错误还是我遗漏了什么?我将不胜感激任何建议或替代方法,谢谢大家。

【问题讨论】:

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


    【解决方案1】:

    --metadata-directive只有在源路径和目的路径都是s3路径时才生效,对本地文件没有影响。在这里,您可以将本地文件属性作为 --metadata(用户定义的元数据)传递给新创建的 s3 对象。例如:

    #!/bin/sh
    file="$1"
    meta=$(stat --printf='{"x-change-time":"%z","x-access-time":"%x","x-modify-time":"%y"}' $file)
    aws s3 cp "$file" s3://test-bucket/ --metadata "$meta"
    
    test.sh ./test.pdf
    

    【讨论】:

    • 看起来不错!我很高兴尝试您的代码。虽然这种方法不需要我为每个文件创建一个变量($file)吗?
    • 我已经更新了脚本,现在您可以将文件路径作为参数传递
    猜你喜欢
    • 2018-04-25
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多