从s3存储桶下载时如何设置水印

时间:2019-04-11 06:08:33

标签: bash amazon-s3 watermark

我有一个s3存储桶,其中包含zip文件。 我有一个脚本,可将zip文件下载到我的本地服务器,解压缩并将它们上传到另一个s3存储桶。 如何设置水印,这样我才能知道我最后下载的文件是什么,因此无需在每次运行脚本时将所有文件保存在本地或下载所有文件? 我正在使用aws sync命令,据我了解,该命令应该仅复制新文件,对吗?

aws s3 sync $gcs3$gcRegion/$gcTech/$gcPrinterFamily/$gcPrinterType/$gcPrinterName/  $dir

1 个答案:

答案 0 :(得分:0)

AWS Command-Line Interface (CLI) aws s3 sync命令将复制目标中不存在的所有文件。

因此,您要么需要保留所有以前下载的文件,要么需要另一种方式来跟踪已下载的文件。

相反,我建议编写自己的程序,

  • 在存储的时间戳记之后,以LastModified时间戳记从S3存储桶下载所有文件
  • 存储当前时间
  • 解压缩文件并将其复制到另一个S3存储桶
  • 删除zip文件和未压缩的文件

因此,该程序将需要记住上次下载文件的时间,但无需记住它下载了哪些文件。请注意-S3将时间存储在UTC上,因此您需要转换时区。或者,只需记住您下载的文件的最高LastModified值。

要获取自某个LastModified日期以来的文件列表,可以使用AWS CLI:

aws s3api list-objects --bucket jstack-a --query "Contents[?LastModified>='2019-04-11'].[Key]" --output text

但是,我建议为上述活动编写Python程序,因为编写命令行脚本会更容易。