サーバー内のデータのバックアップやcron処理した結果の退避などで
S3にアップロードしたくなることが多い。
S3にファイルをアップロードするだけなのに
JavaやRubyをサーバーにインストールするのもバカバカしいので
aws-cliとシェルスクリプトだけでなんとかしたくなるよね。
今回はシェルスクリプトでS3にファイルをコピー、アップロードするコードを書きだめます。
特定のディレクトリ内のファイルをzipしてS3にコピーするまで。
事前準備
aws-cliが必要です。
今回はzipするのでそれもインストールします。
一度 su でrootになったほうが楽かも。
1 2 3 4 |
$ sudo su $ yum install -y epel-release && yum install -y zip $ curl -kL https://bootstrap.pypa.io/get-pip.py | python $ pip install awscli --upgrade --user |
これだけ。
CentOS7以外の人はドキュメント見たほうが早いです。
S3へアップロードするスクリプト
流れはこれだけ
・ /tmp/配下にlogファイル群をzip化して配置
・ zipファイルを「omohikane-log-backup」バケットの「backup」配下にコピーする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/bin/bash TODAY=$(date '+%F') BK_FILE_NAME="backup_$TODAY" BK_PATH="/tmp/$BK_FILE_NAME" function bk() { zip "$BK_PATH.zip" /var/log/omohikane/* return 1 } function up() { aws s3 cp "$BK_PATH.zip" "s3://omohikane-log-backup/backup/$BK_FILE" return 1 } function my_error() { echo "Error happen. exit now" exit 1 } echo "Start bk" bk echo "Start upload to s3" up echo "Done" |
いや簡単。
AWS_ACCESS_KEY_IDやAWS_SECRET_ACCESS_KEYとか
環境変数の設定だけ忘れないようにね。
じゃあね〜〜〜〜。