WEB開発備忘録

サーバのデータをAWSのS3にバックアップ

VPSなどのサーバデータをAWSのS3に自動バックアップする手順です。
※ 世代管理はサーバサイドで、という前提

インストールするもの
・s3cmd AWSのs3関連APIを利用
・awscli AWSコマンドラインインターフェイス

 

事前に用意するもの
・S3にバックアップを保管するバケット
・IAMで上記バケットに書き込み可能なユーザー
・そのユーザーのアクセスキーと秘密鍵

 

ざっくりとした手順
(1).必要なAWSのAPI用ツールをインストール/設定
(2).ファイルアップロード実行
(3).cronに更新ファイルのアップロード処理コマンドを登録

まずs3cmdのインストール/設定です。

[prompt] # yum --enablerepo=epel install s3cmd
[prompt] # s3cmd --configure
Access Key: 書き込むAWSユーザーのアクセスキー
Secret Key: 書き込むAWSユーザーの秘密鍵

Default Region [US]: ap-northeast-1 (東京リージョン)
Encryption password: エンターキー
Path to GPG program [/usr/bin/gpg]:エンターキー
Use HTTPS protocol [No]:Yes
Test access with supplied credentials? [Y/n] y
Save settings? [y/N] y

 

 

次にawcliのインストールです。
最初にpythonをインストールします。

[prompt] # yum install python python-devel --enablerepo=epel

次にpipをインストール

[prompt] # yum -y install python-setuptools
[prompt] # easy_install pip
Access Key: 書き込むAWSユーザーのアクセスキー
Secret Key: 書き込むAWSユーザーの秘密鍵
Default region name [None]: ap-northeast-1 (東京リージョン)
Default output format [None]: json

コマンドラインで同期してみましょう。

[prompt] # s3cmd sync --delete-removed --reduced-redundancy アップロードするディレクトリパス s3://バケット名/

アップロード先にサブディレクトリを指定することも可能です。

[prompt] # s3cmd sync --delete-removed --reduced-redundancy アップロードするディレクトリパス s3://バケット名/サブディレクトリ

これでバックアップが出来ました。
あとはcronで毎日一回、バックアップを取るようにします。
ex)毎朝5時にバックアップ

0 5 * * * s3cmd sync --delete-removed --reduced-redundancy アップロードするディレクトリパス s3://バケット名/

リストア時にファイルを一括ダウンロードするのは以下です。
○ リストア方法/S3からファイルを一括でダウンロード

[prompt] # aws s3 cp --region ap-northeast-1 s3://バケット名/ 保存先パス --recursive

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です