backup files to s3

投稿日:

Linux Server上のファイルを、AWSのs3上にbackupする。

1. s3のbucket作成

AWSのConsoleで、バックアップファイルを保存するbucketを作成する。 バックアップなので、任意のユーザのみアクセス可能とするため、以下のようなPolicy for Bucketを設定する。
{
	"Version": "2008-10-17",
	"Id": "Policy1399994224671",
	"Statement": [
		{
			"Sid": "Stmt1399994210908",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::AMIのユーザID:root"
			},
			"Action": "s3:*",
			"Resource": "arn:aws:s3:::バケット名/*"
		}
	]
}

これで、「ユーザID」のAWS AMIユーザのみ、上記のバケットにアクセスできるようになる。
どういうことかというと、AWS Console経由か、AWS ACCESS KEYを利用したアクセスのみ、
「パケット名」の内容にアクセスできることになる。

2. s3cmd のsetup

Linuxで利用できるs3連携ツールは、amazon謹製のaws command toolでもいいが、 今回はs3cmdを利用してみる。まずは、s3cmd のinstall。
% sudo apt-get install s3cmd

コンフィグレーションファイル($HOME/.s3cfg)の例は、こんな感じ。

[default]
access_key = AMIのアクセスキー
acl_public = False
bucket_location = US
debug_syncmatch = False
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encrypt = False
force = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase = 
guess_mime_type = False
human_readable_sizes = False
preserve_attrs = True
proxy_host = 
proxy_port = 0
recv_chunk = 4096
secret_key = jAMIのシークレットキー
send_chunk = 4096
simpledb_host = sdb.amazonaws.com
use_https = False
verbosity = WARNING

3. s3cmd でsync

s3の状態を確かめるため、以下のようにコマンドを実行する。
% s3cmd ls
2014-04-24 09:44  s3://aaaaaaa.jp
2014-05-12 04:54  s3://www.alpha.com
2014-04-27 22:55  s3://www.beta.jp
2014-05-13 14:10  s3://mybackups

例えば、s3://mybackups/20140513 というバケットに任意のディレクトリをバックアップするなら、

% s3cmd sync ./バックアップしたいディレクトリ s3://mybackups/20140513
...
./バックアップしたいディレクトリ/help.html -> s3://mybackups/20140513/バックアップしたいディレクトリ/help.html/  [1573 of 1573]
 6544 of 6544   100% in    0s    82.56 kB/s  done
Done. Uploaded 164454446 bytes in 314.9 seconds, 509.94 kB/s

アップロードしたファイル数、バイト数などが表示されれば、OK。