AWS S3 CLI中的选择性文件下载

时间:2015-08-11 12:51:58

标签: amazon-web-services amazon-s3

我有S3存储桶中的文件,我试图根据8月8日,8月​​9日的日期下载文件,如何下载选择性日期文件? 我使用了以下代码,但它仍然下载整个存储桶列表

aws s3 cp s3://bucketname/ folder/file --profile pname --exclude \"*\" --recursive --include \"" + "2015-08-09" + "*\"

我不确定,如何实现这一点。

4 个答案:

答案 0 :(得分:32)

此命令将复制以2015-08-15开头的所有文件:

aws s3 cp s3://BUCKET/ folder --exclude "*" --include "2015-08-15*" --recursive

如果您的目标是同步一组文件而不复制它们两次,请使用sync命令:

aws s3 sync s3://BUCKET/ folder

这将复制自上次同步以来添加或修改的所有文件。

实际上,这相当于上面的cp命令:

aws s3 sync s3://BUCKET/ folder --exclude "*" --include "2015-08-15*"

参考文献:

答案 1 :(得分:0)

  

如果您的存储桶尺寸大到10到20演出,   在我自己的个人用例中,这是正确的,您可以实现相同的目标   通过在多个终端窗口中使用sync来实现目标。

如果您需要为产品环境生成令牌,则所有终端会话都可以使用相同的令牌。

 $ aws s3 sync s3://bucket-name/sub-name/another-name folder-name-in-pwd/
 --exclude "*" --include "name_date1*"  --profile UR_AC_SomeName

和另一个终端窗口(相同的密码)

$ aws s3 sync s3://bucket-name/sub-name/another-name folder-name-in-pwd/ 
    --exclude "*" --include "name_date2*"  --profile UR_AC_SomeName

和另外两个"name_date3*" and "name_date4*"

  

此外,您还可以在同一同步中执行多个排除   命令如下:

$ aws s3 sync s3://bucket-name/sub-name/another-name my-local-path/ 
--exclude="*.log/*" --exclude=img --exclude=".error" --exclude=tmp 
--exclude="*.cache"

答案 2 :(得分:0)

此Bash脚本将使用aws-cli按修改日期将所有文件从一个存储桶复制到另一个存储桶。

while IFS= read -r line; do
    aws s3 cp s3://<SRC_BCKT>/${line} s3://<DEST_BCKT>/${line} --sse AES256
done < a.txt

内部Bash文件

DWORD CChronoSocket::reply_http(DWORD i, const char * sin){
const unsigned char * in = (const unsigned char *) sin;
CString data = "";
while (*in)
    if (*in<128) 
        data += *in++;
    else 
        data += 0xc2+(*in>0xbf), //more than one operator "+=" matches these operands
        data += (*in++&0x3f)+0x80; //more than one operator "+=" matches these operands


CString header;

DWORD length = strlen(data);

header  = "HTTP/1.0 200 OK\r\n";
header += "Server: ChronoMaster Server\r\n";
header += "Expires: Sat, 01 Jan 2000 00:59:59 GMT\r\n";
header += "Pragma: no-cache\r\n";
header += "Content-type: text/json; \r\n";
char buff2[32];
sprintf(buff2, "Content-Length: %d\r\n", length);
header += buff2;
header += "\r\n";
::send(struct_socket[i].sock, header, header.GetLength(), 0 );

::send(struct_socket[i].sock, data, length, 0 );

return 0;}

答案 3 :(得分:0)

Bash 命令将特定日期或月份的所有文件复制到当前文件夹

aws s3 ls s3://bucketname/ | grep '2021-02' | awk '{print $4}' | aws s3 cp s3://bucketname/{} folder

命令正在做以下事情

  1. 列出一个bucket下的所有文件
  2. 过滤掉 2021-02 的所有文件,即 2021 年 2 月的所有文件
  3. 只过滤掉他们的名字
  4. 对特定文件运行命令 aws s3 cp