web-dev-qa-db-ja.com

s3バケットから複数のファイルをコピーする

AWS S3バケットからローカルマシンに複数のファイルをダウンロードするのに問題があります。

ダウンロードしたいすべてのファイル名があり、他のファイル名は必要ありません。どうやってやるの ? aws-cliに何らかのループがありますか?

すべてのファイル名を引数として使用する単一のコマンドを使用できないように、ダウンロードする必要があるファイルは数百個あります。

15
DQI

ファイルfilename.txtからすべてのファイル名を読み取ることができるbashスクリプトがあります。

#!/bin/bash  
set -e  
while read line  
do  
  aws s3 cp s3://bucket-name/$line dest-path/  
done <filename.txt
13
Rajan

cpコマンドの ドキュメント で説明されているように、--recursiveオプションも使用できます。指定されたプレフィックスの下にあるすべてのオブジェクトを再帰的にコピーします。例えば。:

aws s3 cp s3://folder1/folder2/folder3 . --recursive

folder1/folder2/folder3の下のすべてのファイルを取得し、ローカルディレクトリにコピーします。

15
siphiuel

「cp」の代わりに「sync」を使用することもできます。以下は、ローカルフォルダー内の「.txt」拡張子を持つファイルのみをダウンロード/同期します。

aws s3 sync --exclude="*" --include="*.txt" s3://mybucket/mysubbucket .
7
f.cipriani

doc に従って、s3 cpincludeおよびexcludeフィルターも使用できます。そのため、次のようなことができます。

aws s3 cp s3://bucket/folder/ . --recursive --exclude="*" --include="2017-12-20*"

excludeフィルターとincludeフィルターの順序が正しいことを確認してください。これにより、全体の意味が変わる可能性があります。

5
geekgunda