Amazon S3 在日期后使用正则表达式复制文件
Amazon S3 Copy files after date and with regex
我正在尝试将一些文件从 S3 sourceBucket 复制到 targetBucket,但我需要按日期和前缀进行过滤。
我希望它可以用 AWS CLI 完成,但目前我被 list-object 或 cp 命令卡住了。
我可以使用
正确过滤
aws s3api list-objects-v2 --bucket sourceBucket --query 'Contents[?(LastModified > `2021-09-01`)]' --prefix "somePrefix_"
使用 CP 我可以复制文件,但只能通过前缀
aws s3 cp s3://sourceBucket/ s3://targetBucket/ --recursive --include "somePrefix" --exclude "*"
我尝试使用 header --x-amz-copy-source-if-modified-since
提出一些想法,但看起来您可以将它与命令 aws s3api copy-object
一起使用,并且它一次复制一个项目( doc)。
我读了一些 answers/docs,我想我明白 che cp 命令不按日期过滤,而只按前缀过滤。
你知道如何解决这个问题吗?
提前致谢!
由于您已经有了一个包含要复制到另一个存储桶的对象的列表,我建议编写一个 bash 脚本来复制多个对象:
#!/bin/bash
SOURCE_BUCKET="<my-bucket>"
DESTINATION_BUCKET="<my-other-bucket>"
PREFIX="<some-prefix>"
content=$(aws s3api list-objects-v2 --bucket $SOURCE_BUCKET --query 'Contents[?(LastModified > `2021-09-01`)]' --prefix $PREFIX | jq -r ".[].Key")
for file in $content;
do
aws s3api copy-object --copy-source $SOURCE_BUCKET/$file --key $file --bucket $DESTINATION_BUCKET | jq
done
请注意,此脚本需要安装 jq
。
我正在尝试将一些文件从 S3 sourceBucket 复制到 targetBucket,但我需要按日期和前缀进行过滤。 我希望它可以用 AWS CLI 完成,但目前我被 list-object 或 cp 命令卡住了。
我可以使用
正确过滤aws s3api list-objects-v2 --bucket sourceBucket --query 'Contents[?(LastModified > `2021-09-01`)]' --prefix "somePrefix_"
使用 CP 我可以复制文件,但只能通过前缀
aws s3 cp s3://sourceBucket/ s3://targetBucket/ --recursive --include "somePrefix" --exclude "*"
我尝试使用 header --x-amz-copy-source-if-modified-since
提出一些想法,但看起来您可以将它与命令 aws s3api copy-object
一起使用,并且它一次复制一个项目( doc)。
我读了一些 answers/docs,我想我明白 che cp 命令不按日期过滤,而只按前缀过滤。
你知道如何解决这个问题吗? 提前致谢!
由于您已经有了一个包含要复制到另一个存储桶的对象的列表,我建议编写一个 bash 脚本来复制多个对象:
#!/bin/bash
SOURCE_BUCKET="<my-bucket>"
DESTINATION_BUCKET="<my-other-bucket>"
PREFIX="<some-prefix>"
content=$(aws s3api list-objects-v2 --bucket $SOURCE_BUCKET --query 'Contents[?(LastModified > `2021-09-01`)]' --prefix $PREFIX | jq -r ".[].Key")
for file in $content;
do
aws s3api copy-object --copy-source $SOURCE_BUCKET/$file --key $file --bucket $DESTINATION_BUCKET | jq
done
请注意,此脚本需要安装 jq
。