Bash Shell脚本-如何将上次修改的AWS S3对象从一个bucket复制到另一个bucket?

Bash Shell脚本-如何将上次修改的AWS S3对象从一个bucket复制到另一个bucket?,bash,amazon-web-services,shell,amazon-s3,scripting,Bash,Amazon Web Services,Shell,Amazon S3,Scripting,我不熟悉编写脚本和编写Shell脚本来将AWS S3对象从一个AWS帐户bucket复制到另一个bucket?管道将zip文件(.zip)上载到存储桶。shell脚本应仅复制上次修改的对象(文件)。我知道在shell脚本中,您可以基于通配符匹配递归地查找文件,并从S3CLI获取最后上载的对象。有没有更优雅、更有效的方法 # Normal way of copying from one bucket to another aws s3 cp s3://source-bucket/object-v2

我不熟悉编写脚本和编写Shell脚本来将AWS S3对象从一个AWS帐户bucket复制到另一个bucket?管道将zip文件(.zip)上载到存储桶。shell脚本应仅复制上次修改的对象(文件)。我知道在shell脚本中,您可以基于通配符匹配递归地查找文件,并从S3CLI获取最后上载的对象。有没有更优雅、更有效的方法

# 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'
我想您可以参考S3中获取最后修改的对象


获得对象后,可以在循环中放置一个,然后可以调用命令来复制文件。请告诉我它是否适合您。

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

SOURCE\u BUCKET=bucket1
目的地桶=桶2
LAST=$(aws s3api列表对象--bucket$bucket--查询'sort_by(Contents,&LastModified)[-1]。Key'--输出文本)
aws s3 cp s3://$SOURCE\u BUCKET/$LAST s3://$DEST\u BUCKET

请注意,在一个大的存储桶中列出所有对象是一个缓慢而昂贵的操作,而且s3不能保证在写入一致后读取。@DanielFarrell很高兴知道,您对如何更优雅地执行此操作有何建议?