AWS S3バケットからローカルマシンに複数のファイルをダウンロードするのに問題があります。
ダウンロードしたいすべてのファイル名があり、他のファイル名は必要ありません。どうやってやるの ? aws-cliに何らかのループがありますか?
すべてのファイル名を引数として使用する単一のコマンドを使用できないように、ダウンロードする必要があるファイルは数百個あります。
ファイルfilename.txt
からすべてのファイル名を読み取ることができるbashスクリプトがあります。
#!/bin/bash
set -e
while read line
do
aws s3 cp s3://bucket-name/$line dest-path/
done <filename.txt
cp
コマンドの ドキュメント で説明されているように、--recursive
オプションも使用できます。指定されたプレフィックスの下にあるすべてのオブジェクトを再帰的にコピーします。例えば。:
aws s3 cp s3://folder1/folder2/folder3 . --recursive
folder1/folder2/folder3の下のすべてのファイルを取得し、ローカルディレクトリにコピーします。
「cp」の代わりに「sync」を使用することもできます。以下は、ローカルフォルダー内の「.txt」拡張子を持つファイルのみをダウンロード/同期します。
aws s3 sync --exclude="*" --include="*.txt" s3://mybucket/mysubbucket .
doc に従って、s3 cp
でinclude
およびexclude
フィルターも使用できます。そのため、次のようなことができます。
aws s3 cp s3://bucket/folder/ . --recursive --exclude="*" --include="2017-12-20*"
exclude
フィルターとinclude
フィルターの順序が正しいことを確認してください。これにより、全体の意味が変わる可能性があります。