S3から特定のファイルを再帰的にコピーする方法

AWS, AWSCLI, S3

1.概要

現在のシステムでは以下のように保存されている。

■格納例
[S3バケット]/[サーバホスト名] / [インスタンスID] / YYYY / MM / DD /[ログ種別] /ログファイル
 ※ログファイルは、5分ごとに1ファイルが作成される。

■パス例

上記のようなS3のディレクトリ構成のため、特定の日のログを探すのがかなり困難となります。
なので、サーバに一括でログファイルをダウンロードするコマンドを調査しましたので、共有します。

2.実行コマンド

3.解説

各コマンドとオプションの解説は以下の通りです。

コマンド/オプション 解説
aws s3 CLIでS3サービスに関する手続き実行するコマンド
cp ファイルを、ローカル→S3、S3→ローカル、S3→S3でコピー
s3://test-recochoku-jp S3バケット名+ディレクトリ(S3Url)
. ローカルディレクトリ
–recursive 指定されたディレクトリ配下を再帰的に検索
–exclude 指定された文字列が存在するファイルを除外(パスも含む)
–include 指定された文字列が存在するファイルを含める。※–excludeで除かれたものが対象となる。
–dryrun ※おまけ 指定した場合、ファイルコピーは実施せず、実行結果のみを表示

また、「–exclude」と「–include 」で使用が出来る正規表現は、以下の通りです。

なので、「–recursive」オプションで再帰的にディレクトリを検索して
「–exclude」に”*”を指定して、いったんすべてを除外します。
除外したあと、「–include」に必要なファイルを正規表現を指定して取得します。
あとは、grepコマンドなどで調査を実施することが出来ます。

4.参考URL

AWS CLI Command Reference

この記事を書いた人

山本 耕琢(コウタク)
山本 耕琢(コウタク)意識低い系エンジニア
レコチョクの楽曲情報の検索や、決済/会員情報、 レコメンド情報などを扱う、レコチョクAPIの運用と改善を担当しています。主にプロジェクト管理をやっています。エンジニアリングは、趣味レベルですが、気づきがあったことなどを更新していきます。

AWS, AWSCLI, S3