Shell脚本-如何将最后修改的AWS S3对象从一个存储桶复制到另一个存储桶?

时间:2020-08-23 14:03:40

标签: bash amazon-web-services shell amazon-s3 scripting

我是脚本编写和编写Shell脚本的新手,可以将AWS S3对象从一个AWS账户存储桶复制到另一个存储桶?管道将zip文件(.zip)上传到存储桶。外壳程序脚本应仅复制最后修改的对象(文件)。我知道在shell脚本中,您可以基于通配符匹配来递归查找文件,并从S3 CLI获取最后上传的对象。有没有更优雅,更有效的方法呢?

# Normal way of copying from one bucket to another
aws s3 cp s3://source-bucket/object-v2.2.7.zip s3://destination- bucket/.

# Using the --recursive parameter to copy file
aws s3 ls $source-bucket --recursive | sort | tail -n 1 | awk '{print $4}'

  
get_object = `aws s3 ls $source-bucket --recursive | sort | tail -n 1 | awk '{print $4}'`

aws s3 cp s3://$get_object s3://destination-bucket
echo 'Successfully uploaded file to Destination Bucket'

2 个答案:

答案 0 :(得分:2)

此脚本找到最后修改的对象,然后将其复制。

SOURCE_BUCKET=bucket1
DEST_BUCKET=bucket2

LAST=$(aws s3api list-objects --bucket $BUCKET --query 'sort_by(Contents, &LastModified)[-1].Key' --output text)

aws s3 cp s3://$SOURCE_BUCKET/$LAST s3://$DEST_BUCKET

答案 1 :(得分:-1)

我想您可以参考here来获取S3中最后修改的对象。

一旦获得对象,就可以放置一个loop,并且可以在循环内调用aws s3 cp命令来复制文件。如果适合您,请让我来。