当前位置: 首页 > 知识库问答 >
问题:

使用AWS CLI下载S3存储桶中的最新文件?[重复]

施华奥
2023-03-14

我有一个包含数据库备份的S3存储桶。我正在创建一个脚本来下载最新的备份(并最终将其还原到其他地方),但我不确定如何只从存储桶中获取最新的文件。

是否可以使用AWS CLI工具仅将最近的文件从S3存储桶复制到本地目录?

共有3个答案

松刚豪
2023-03-14

上面的解决方案使用的是Bash。如果想要在PowerShell中执行同样的操作,以便在Windows上下载,请使用以下脚本:

# This assumes AWS CLI exe is in your path.
$s3location = "s3://bucket-name"
$files = $(aws s3 ls $s3location --recursive | sort | select -last 3)
$dlPath = "C:\TEMP"

foreach ($s3FileInfo in $files) {
    $filename = $s3FileInfo.Split()[-1]
    $path = "${s3location}/${filename}"
    aws s3 cp $path $dlPath
    echo("Done downloading ${path} to ${dlPath}")
}
柴增
2023-03-14
FILE=`aws s3api list-objects-v2 --bucket "$BUCKET_NAME" --query 'reverse(sort_by(Contents[?contains(Key, \`$FILE_NAME_FILTER\`)], &LastModified))[:1].Key' --output=text`;aws s3 cp "s3://$BUCKET_NAME/$FILE" .

$BUCKET_NAME-是您要从中下载的BUCKET。

$FILE_NAME_FILTER-用作要匹配的名称的筛选器的字符串。

aws s3 cp“”-它在双引号中,因为它还包括名称中带有空格的文件。

廉雅惠
2023-03-14

下面是基于@error2007s的答案创建的bash脚本。此脚本需要您的aws配置文件和bucket name作为变量,并将最新的对象下载到~/downloads文件夹:

#!/bin/sh
PROFILE=your_profile
BUCKET=your_bucket

OBJECT="$(aws s3 ls --profile $PROFILE $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}')"
aws s3 cp s3://$BUCKET/$OBJECT ~/Downloads/$OBJECT --profile $PROFILE
 类似资料:
  • 有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?

  • 问题内容: 目标 将文件从s3存储桶下载到用户计算机。 语境 我正在为React应用开发Python / Flask API。当用户单击前端上的“下载”按钮时,我想将适当的文件下载到他们的计算机上。 我尝试过的 我目前正在使用一些代码来查找下载文件夹的路径,然后将该路径以及他们试图下载的存储桶中的文件作为第二个参数插入到download_file()中。 这在本地有效,并且测试运行良好,但是一旦部

  • 我有一个自动配置的AWS,Spring Boot应用程序,我正在尝试设置一个endpoint,该endpoint将简单地从Amazon S3中的给定存储桶下载特定文件。我使用AWS控制台将JPEG文件上传到存储桶中——现在我正在尝试使用Spring Boot API下载该文件。 我收到以下错误:<code>com.amazonaws.services.s3.model。AmazonS3Except

  • 我正在使用python 2.7. x和Boto API 2. X连接到AWS S3桶。我有一个独特的情况,我想从S3桶下载文件,从一个特定的目录/文件夹说。但问题是我想在S3文件夹中留下一个最新的文件,而不是下载它。一旦,我在我的本地框中下载这些文件,我想将这些文件移动到同一个桶下的不同文件夹说。以前有人处理过类似的情况吗? 以下是一些解释: 将下载的文件从S3存储桶移动到同一存储桶下的不同文件夹

  • 问题内容: 我的目标: 显示一个对话框,提示用户保存从AWS下载的文件。 我的问题: 我目前正在使用awssum- amazon-s3创建下载流。但是,我仅设法将文件保存到服务器或将其流式传输到命令行…如您从我的代码中看到的那样,我的最后一次尝试是尝试手动设置失败的内容处置头。我无法使用res.download(),因为已经设置了标头? 我如何实现我的目标? 我的节点代码: 我的角度代码: 编写此

  • 我有一个处理CSV文件并返回一些分析的应用程序。我的用户将文件存储在GCP云存储桶中,我希望他们能够向我传递一个存储桶URL和一些身份验证令牌/签名URL,然后应用程序将下载文件并根据需要解析它们。 阅读GCP留档时,我遇到了以下gsutil命令: 这正是我所需要的,但是我正在通过一些REST API HTTP请求寻找同样的功能。我肯定有这样的东西存在,但似乎找不到。或者,如果我可以“列出”一个存