LoginSignup
0
0

More than 5 years have passed since last update.

CLIでS3にバックアップファイルを転送してみる

Last updated at Posted at 2019-03-16

経緯

利用しているサービスでローカル上にバックアップが作成され、サーバーダウンでバックアップファイルも消えるという本末転倒な状態だったのでローカルのバックアップファイルをS3に転送するというスクリプトを作成しました。

バックアップ仕様

  • ローカルのバックアップファイルは毎日作成され「日付.zip」という命名で作成される

環境

  • CentOS6系

事前準備

  1. S3のバケットを事前に作成しておきます。
  2. 参考資料を参照してIAMのユーザー作成をしてAccess Key IDSecret Access Keyを取得してください。
    参考資料ではAdministratorAccessを付与していますが、S3を利用する場合は権限設定はS3だけでいいと思います。
    aws configureDefault region nameは東京リージョンであれば「ap-northeast-1」を設定してください。

利用について

毎日クーロンで実行することを想定しています。
また、バックアップファイルが溜まっていく一方なのでS3とローカルから削除する処理も追加しております。
バックアップファイルの容量が大きく、S3の料金が高額になってしまうことを防ぐためです。

スクリプト

main.sh
#!/bin/bash
today=$(date "+%Y%m%d")

# ファイルの存在チェック(ファイルパスは適宜変更)
ls -l /file_path/${today}.zip
file_check=`echo $?`

if [ ${file_check} -eq 0 ] ; then
  # ローカルファイルをS3のバケットに送る(バケット名は適宜変更)
  aws s3 cp /file_path/${today}.zip s3://bucket_name/
fi

# 過去10日のバックアップファイルを削除
targetDay=`date --date "${today} 10 days ago" +%Y%m%d`

# ローカルに削除対象のファイルが存在するかチェック
ls -l /file_path/${today}.zip
local_backup_check=`echo $?`
if [ ${local_backup_check} -eq 0 ] ; then
  rm -f /file_path/${targetDay}.zip
fi

# バケット内に削除対象のファイルが存在するかチェック
aws s3 ls s3://bucket_name/${targetDay}.zip
s3_backup_check=`echo $?`
if [ ${s3_backup_check} -eq 0 ] ; then
  aws s3 rm s3://bucket_name/${targetDay}.zip
fi

以上です。
他にもCLIでS3を操作できるのでいろいろ試してみようかなと思っています。

追記

事前準備で「アクセスキーとシークレットアクセスキーを取得してください」と記載しましたが、
EC2でCLIを利用するのであればRoleを利用した方法もあります。
というかRoleが推奨されているようです。

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