この記事は最終更新日から1年以上が経過しています。
1.概要
現在のシステムでは以下のように保存されている。
■格納例
[S3バケット]/[サーバホスト名] / [インスタンスID] / YYYY / MM / DD /[ログ種別] /ログファイル
※ログファイルは、5分ごとに1ファイルが作成される。
■パス例
s3://test-recochoku-jp/ api-ap/ api-ap00-i-0ed0250b86b11d3a6/ 2017/02/17/ service_reco_dev.log/ service_reco_dev.log_2017-02-17-15_12.gz |
上記のようなS3のディレクトリ構成のため、特定の日のログを探すのがかなり困難となります。
なので、サーバに一括でログファイルをダウンロードするコマンドを調査しましたので、共有します。
2.実行コマンド
aws s3 cp s3://test-recochoku-jp/api-ap/ . --recursive --exclude "*" --include "api-ap00*/2017/02/1*/service_reco_dev*.gz" |
3.解説
各コマンドとオプションの解説は以下の通りです。
コマンド/オプション | 解説 |
---|---|
aws s3 | CLIでS3サービスに関する手続き実行するコマンド |
cp | ファイルを、ローカル→S3、S3→ローカル、S3→S3でコピー |
s3://test-recochoku-jp | S3バケット名+ディレクトリ(S3Url) |
. | ローカルディレクトリ |
–recursive | 指定されたディレクトリ配下を再帰的に検索 |
–exclude | 指定された文字列が存在するファイルを除外(パスも含む) |
–include | 指定された文字列が存在するファイルを含める。※–excludeで除かれたものが対象となる。 |
–dryrun ※おまけ | 指定した場合、ファイルコピーは実施せず、実行結果のみを表示 |
また、「–exclude」と「–include 」で使用が出来る正規表現は、以下の通りです。
*: Matches everything ?: Matches any single character [sequence]: Matches any character in sequence [!sequence]: Matches any character not in sequence |
なので、「–recursive」オプションで再帰的にディレクトリを検索して
「–exclude」に”*”を指定して、いったんすべてを除外します。
除外したあと、「–include」に必要なファイルを正規表現を指定して取得します。
あとは、grepコマンドなどで調査を実施することが出来ます。
4.参考URL
この記事を書いた人
- レコチョクの楽曲情報の検索や、決済/会員情報、 レコメンド情報などを扱う、レコチョクAPIの運用と改善を担当しています。主にプロジェクト管理をやっています。技術力は低めですが、気づきがあったことなどを更新していきます。
最近書いた記事
- 2023.12.09エンジニア組織紹介 - バックエンドアーキテクトG -
- 2023.11.07キャリアの学びを得たオンライン記事の紹介(出会いと経験で自分を変える「キャリアの螺旋」の歩み方)
- 2023.10.20Amazon EBSにおけるボリュームサイズの拡張
- 2017.07.28ローカルからS3にシンボリックリンクを除いてアップロードする方法