【问题标题】:looking for s3cmd download command for a certain date寻找某个日期的 s3cmd 下载命令
【发布时间】:2017-01-21 15:15:04
【问题描述】:

我试图弄清楚 s3cmd 命令将按日期从存储桶下载文件,例如,我有一个名为“test”的存储桶,在该存储桶中有来自不同日期的不同文件。我正在尝试获取昨天上传的文件。命令是什么?

【问题讨论】:

  • 存储桶/文件夹是如何组织的?是持平还是按日期?
  • 文件、大小、类型、上次修改时间(年-月-日、时-分-秒)、存储类
  • 如果您的存储桶结构是根据日期组织的,则可以遍历文件夹结构并检索文件。 (AWS S3 CloudTrail 日志中就是这种情况)

标签: amazon-web-services amazon-s3 aws-cli s3cmd


【解决方案1】:

没有单一的命令可以让你做到这一点。你必须写一个像这样的脚本。或者使用允许您执行此操作的 SDK。下面的脚本是一个示例脚本,它将获取过去 30 天的 S3 文件。

#!/bin/bash
# Usage: ./getOld "bucketname" "30 days"
s3cmd ls s3://$1 | while read -r line;  do

createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
olderThan=`date -d"-$2" +%s`
if [[ $createDate -lt $olderThan ]]
  then 
    fileName=`echo $line|awk {'print $4'}`
    echo $fileName
    if [[ $fileName != "" ]]
      then
        s3cmd get "$fileName"
    fi
fi
done;

【讨论】:

    【解决方案2】:

    我喜欢 s3cmd,但要使用单行命令,我更喜欢 aws cli 的 JSon 输出和jq JSON 处理器

    命令看起来像

    aws s3api list-objects --bucket "yourbucket" |\
    jq '.Contents[] | select(.LastModified | startswith("yourdate")).Key' --raw-output |\
    xargs -I {} aws s3 cp s3://yourbucket/{} .
    

    脚本的基本作用

    1. 列出给定存储桶中的所有对象
    2. (有趣的部分)jq 将解析Contents 数组并选择LastModified 值以您的模式开头的元素(您需要更改),获取s3 对象的Key 并添加@987654326 @ 所以它会从值中去掉引号
    3. 将结果传递给 aws copy 命令以从 s3 下载文件

    如果你想进一步自动化,你可以从命令行获取昨天

    mac 操作系统

    $ export YESTERDAY=`date -v-1w +%F`
    $ aws s3api list-objects --bucket "ariba-install" |\
    jq '.Contents[] | select(.LastModified | startswith('\"$YESTERDAY\"')).Key' --raw-output |\
    xargs -I {} aws s3 cp s3://ariba-install/{} .
    

    适用于 linux 操作系统(或其他我不熟悉的 bash)

    $ export YESTERDAY=`date -d "1 day ago" '+%Y-%m-%d' `
    $ aws s3api list-objects --bucket "ariba-install" |\
    jq '.Contents[] | select(.LastModified | startswith('\"$YESTERDAY\"')).Key' --raw-output |\
    xargs -I {} aws s3 cp s3://ariba-install/{} .
    

    现在您知道是否要将 YESTERDAY 变量更改为具有不同类型的日期

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2021-06-18
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多