[英]Change meta-data on selected files in S3
我发现一堆扩展名错误的图像文件。 由于网站的制作方式,它们必须具有.jpg
扩展名。 但其中一些是png
文件。
所以我快速列出了伪造的 JPEG 文件ls public/assets/image/*.jpg | xargs file --mime | grep -v jpeg
ls public/assets/image/*.jpg | xargs file --mime | grep -v jpeg
ls public/assets/image/*.jpg | xargs file --mime | grep -v jpeg
and found https://stackoverflow.com/a/25825362/205696 that has an example of how to use the aws-cli tool to change the Cache-Control
header (I want to change the Content-Type
header) .
根据aws s3 sync help
手册页,语法是sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
。 因为我确实想从我的机器同步任何文件,所以我选择了最后一种语法aws s3 sync <S3Uri> <S3Uri>
。
但是这样做:
aws s3 sync s3://firefund-assets/underathens4.jpg s3://firefund-assets/underathens4.jpg --content-type image/png
似乎没有任何改变。 underathens4.jpg 文件仍然具有System defined Content-Type image/jpeg
...并且没有任何内容写入标准输出。
如果我可以更改 S3 中文件的元数据,那么我可以简单地执行cat fakeJpegs.txt | sed 's/public\/assets\/image\///' | xargs -i aws s3 sync s3://firefund-assets/'{}' s3://firefund-assets/'{}' --content-type image/png
cat fakeJpegs.txt | sed 's/public\/assets\/image\///' | xargs -i aws s3 sync s3://firefund-assets/'{}' s3://firefund-assets/'{}' --content-type image/png
我不想重新上传任何文件。 在这种情况下,我可以使用 s3.console.aws.amazon.com 并手动进行更改。 我只是想偶尔有一个小脚本来做这个..
更改已上传到 AWS S3 存储桶的多个文件的默认内容类型是相关的,但建议再次上传文件。
您可以在指定新信息的同时将 object 复制到自身之上。
使用cp
命令而不是sync
命令:
aws s3 cp s3://firefund-assets/file.jpg s3://firefund-assets/file.jpg --content-type image/png
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.