Amazon S3 のフォルダを一括で保存する方法

  • URLをコピーしました!

はじめに

AWS Management Console では、S3 内のフォルダを一括してダウンロードすることができません。
そのため、例えば S3 に日付毎にフォルダを作成して、システムログを保管していた場合は、1 つ 1 つフォルダを確認する必要があり、非常に手間がかかります。
一括ダウンロードするには、AWS CLI を使用する必要があります。
本記事では、Ubuntu 20.04 に AWS CLI を使用して、フォルダを一括ダウンロードする方法を紹介します。

前提条件

Ubuntu 20.0.4 に AWS CLI をインストールしておく必要があります。
AWS CLI のインストール方法については、以下の記事をご参照ください。
[sitecard subtitle=関連記事 url=https://mytech-blog.com/ubuntu-aws-cli/ target=]

AWS CLI による一括 DL

構文

aws s3 cp コマンドを使用します。<source> はバケットの URI を指定、<target> は保存先を指定します。

aws s3 cp <source> <target> [--options]

実行例

S3 の example/logs フォルダを一括ダウンロードし、Ubuntu の ./tmp/awslogs に保存する例です。--recursive オプションにより、example/logs フォルダ内の全てのファイルがダウンロード対象になります。

aws s3 cp s3://example/logs/ ./tmp/awslogs --recursive

<source> に指定する URI は、AWS Management Console(以下の赤枠の部分)でコピーすることができます。パスが長い場合に便利です。

DL した .gz ファイルの一括解凍

DL したファイルは、.gz ファイルになっています。
ディレクトリ内の .gz ファイルを全て解凍するには、Ubuntu で次のコマンドを実行します。

 find . -name '*.gz' | xargs -n1 gunzip

解凍したファイルの結合

解凍した複数のファイルは、1 つに結合することが可能です。
例えば、解凍したログが以下だったとします。

$ ls /tmp/awslogs
examplelog01
examplelog02
examplelog03

上記を 1 つのファイルを結合し、examplelogs という名前で保存する場合は、Ubuntu で次のコマンドを実行します。

cat example* > examplelogs

また、各ファイルの中から特定の文字列(例えば https://exmaple.com)のみ抽出・結合して、examplelogs という名前で保存する場合は、Ubuntu で次のコマンドを実行します。

cat example* | grep https://example.com > examplelogs

[blogcard url=https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3-commands.html]

以上

参考書籍

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

クラウド・ネットワーク・セキュリティ・仮想化・プログラミング・オープンソース・Web 開発をテーマにしたブログを運営👨‍💻 コンシューマー向けエンタメ事業の新規開発・運営経験 / VCAP-DCA・CCIE Lifetime Emeritus 認定 / 技術とビジネス書愛好家📚

目次