我有S3存储桶中的文件,我试图根据8月8日,8月9日的日期下载文件,如何下载选择性日期文件? 我使用了以下代码,但它仍然下载整个存储桶列表
aws s3 cp s3://bucketname/ folder/file --profile pname --exclude \"*\" --recursive --include \"" + "2015-08-09" + "*\"
我不确定,如何实现这一点。
答案 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)
aws s3 ls s3://bucketname/ | grep '2021-02' | awk '{print $4}' | aws s3 cp s3://bucketname/{} folder
命令正在做以下事情
aws s3 cp