0
0

S3のバケットごとダウンロードするよ(※ちょとした失敗事例あり)

Posted at

どもども、ogimanです。
2月なのに気温が20度近くいったり、と思ったら次の週には10度以下になったりで体調が・・・
気圧のせいか毎朝全然おきれません〜おじさんにはツラミ:ghost:

今日はAWSのS3バケットをまるっとダウンロード(アップロード)する方法を記載します。

コマンドに限らず技術全般で新しいインプットをすると、古い情報が玉突きのように記憶からなくなっていく!
コマンド覚えていられない症候群(記憶力がないだけw)に罹患しているのでメモっときます。

ご存知の方は時間が勿体ないのでここで離脱しましょうw

ゴール

  • S3のバケットごとをダウンロードする
  • ローカルのデータをS3にフォルダごとアップロードする

要件

以下の2つの要件がありましたとさ

  • 複数のサービスが扱っているのですが、1つのサービスがクローズとなったため、S3のバックアップしておきたい
  • と思ったら、その後にバックアップした一部のデータを他のAWSアカウントのサービスへ移植したい

実行例

S3のバケットごとをダウンロードする

# ディレクトリ作成(※1)
# mkdir "ローカルにディレクトリを作成"
mkdir backup.hoge

# バケット→ローカルへのダウンロード
# aws --profile "プロファイル名" s3 sync s3://"バケット名" "ローカルにディレクトリを作成"
# credentialの指定は忘れずに!defaultで設定している場合は指定不要(※2)
aws --profile ogiman s3 sync s3://backup.hoge ~/Downloads/backup.hoge

※1 バケット名もしくは任意のディレクトリを作成しましょう。さもないと、バケット配下のコンテンツがダウンロードされます。詳細は実行結果を参照ください
※2 https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-files.html#cli-configure-files-format-profile

S3のバケットごとをアップロードする


# バケット→ローカルへのアップロード
# aws --profile "プロファイル名" s3 sync ~/Downloads/"ローカルにディレクトリを作成" s3://"バケット名"
aws --profile ogiman s3 sync ~/Downloads/backup.hoge s3://backup.hoge

ダウンロードの失敗事例

[ogiman:~/Downloads] $ aws --profile ogiman s3 sync s3://backup.hoge ~/Downloads
download: s3://backup.hoge/wordpress/hoge
download: s3://backup.hoge/app/hoge
[ogiman:~/Downloads] $
[ogiman:~/Downloads] $ ls -l  ~/Downloads   (1)
drwxr-xr-x@ 4 ogiman  staff      128  2 22 10:48 app
drwxr-xr-x@ 3 ogiman  staff       96  2 22 10:48 wordpress
[ogiman:~/Downloads] $ mkdir backup.hoge (2)
[ogiman:~/Downloads] $ mv app backup.hoge  (3)
[ogiman:~/Downloads] $ mv wordpress backup.hoge
[ogiman:~/Downloads] $
[ogiman:~/Downloads] $ ls -l backup.hoge
drwxr-xr-x@ 4 ogiman  staff  128  2 22 10:48 app
drwxr-xr-x@ 3 ogiman  staff   96  2 22 10:48 wordpress
  1. 指定したバケット「backup.hoge」がディレクトリとして出来る想定だったが、バケット配下のコンテンツのみが入っている
  2. せこせこと後からディレクトリを作成する・・・虚しい:sweat:
  3. コンテンツを移動する・・・虚しい:grimacing:

つまり、cp(コピー)ではなく、あくまでも同期(sync)なのでディレクトリができなかったのでしょう。

補足

以下でもバケットのダウンロードできます。
--recursive オプション付与するのが面倒だったのでsyncを試しました ⇐怠惰なエンジニアです。

aws --profile ogiman s3 cp s3://"バケット名" "ローカルにディレクトリを作成" --recursive

参考(感謝)

最後に

普段aws-cliを触ってますが、色々とAWSのリソースを操作できて便利ですね!
大量にコマンドあるので覚えるのは無理ゲーなので、公式ドキュメント見ながら、試してます。
皆さんもぜひお試しあれ〜

この記事が少しでも参考になったら、 :heart: お願いします!
励みになります♪

ではでは、良い一日を〜

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0