从AWS S3 CLI获取上次修改的对象 [英] Fetch last modified object from AWS S3 CLI

查看:0
本文介绍了从AWS S3 CLI获取上次修改的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将基于上次修改时间的最新文件从AWS S3Folder_Test1文件夹复制到同一存储桶中的Folder_Test2文件夹,并在复制命令中使用Exclude和Include。

Folders_Test1:

Name                               Last Modified
T1_abc_june21.csv                  June 21,2020 9:27:03 AM GMT-0700
T1_abc_june21.csv                  June 21,2020 7:40:15 PM GMT-0700
T1_abc_june21.csv                  June 21,2020 9:20:32 PM GMT-0700
T1_abc_june25.csv                  June 25,2020 10:23:30 PM GMT-0700
T2_abc_june29.csv                  June 29,2020 6:15:12 AM GMT-0700
T2_abc_june29.csv                  June 29,2020 5:12:15 PM GMT-0700 (Fetch this object)
T1_abc_def_june21.csv              June 21,2020 6:13:15 PM GMT-0700
T2_abc_def_june25.csv              June 25,2020 5:33:10 AM GMT-0700
T3_abc_def_june25.csv              June 25,2020 9:31:15 PM GMT-0700 (Fetch this object)

我必须筛选仅具有abc的最新文件的文件名,并排除复制文件:

我尝试: 步骤1将abc文件从FolderTest1复制到FolderTest2:

aws s3 cp  s3://$bucket/Folder_Test1/ s3://$bucket/Folder_Test2/ --recursive --exclude "*abc_def*"

步骤2它将从FolderTest2:

获取最新abc文件
aws s3 ls  s3://$bucket/Folder_Test2/ --recursive | sort | tail -n 1 | awk '{print $4}'
如何将最新文件从FolderTest2复制到FolderTest3?或者如何从FolderTest2中删除除最新文件以外的所有其他文件?

推荐答案

您正在扫描多少文件?

如果是100,000或更多,您可能希望使用比AWS-CLI更快的版本。S3P使用并行列表算法将S3存储桶列表的速度提高10倍以上

您只需安装NodeJs。然后使用:

运行s3p
npx s3p map 
  --bucket  my-bucket 
  --prefix  Folder_Test1/ 
  --reduce  "js:(a, b) => a.LastModified > b.lastModified ? a : b" 
  --finally "js:({Key}) => Key"

这将输出Folder_Test1/中最近修改的文件的密钥。

更多信息:

免责声明:我为处理非常大的存储桶编写了S3P。

这篇关于从AWS S3 CLI获取上次修改的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆