動的ファイル以外を基本的にS3で管理することになったので覚書。
※AWS CLIのほうが転送速度が速い。どうしてもs3cmd使いたいなら。
####s3cmdをインストール
yum -y --enablerepo epel install s3cmd
####AWSアクセスキーの取得
AWSマネージメントコンソールのIAMの認証情報からアクセスキーを作成、取得する。
####s3cmdでアクセスキーとシークレットアクセスキーの設定
$ s3cmd --configure
Access Key: aaabbbccc
Secret Key: dddeeefff
※サーバーのユーザ単位でconfigは作られるので実際にshellを実行するユーザで作る。
その後の質問については無視しても問題ない。細かい調整もできる。
####ためしにS3バケットが取得できるかテスト
$ s3cmd ls
2018-02-08 02:52 s3://aaa
2018-02-08 02:55 s3://bbb
####shellスクリプト準備
#!/bin/sh
s3cmd sync --dry-run --no-preserve --no-check-md5 --no-mime-magic --guess-mime-type --acl-public --encoding=utf-8 --exclude-from=[exclude-file-path] [from-path] s3://aaa/
answer=$1
if [ "$answer" = "-y" ]; then
answer="y"
else
echo -n "are you sure you wanna release S3? [y/n]"
read answer
fi
if [ "$answer" = "y" ]; then
s3cmd sync --no-preserve --no-check-md5 --no-mime-magic --guess-mime-type --acl-public --encoding=utf-8 --exclude-from=[exclude-file-path] [from-path] s3://aaa/
fi
上記はfrom-pathからバケットaaaに対し、exclude-file-pathのファイルを除外しつつ、syncする例。
はじめにdry-runが走るので、アップされる予定のファイル一覧が表示される。
####実行
$ /bin/bash deploy_s3.sh
exclude: index.php
exclude: bbb.html
upload: aaa.html
are you sure you wanna release S3? [y/n]
除外されるファイルはexcludeというprefixが付く。
ここでyを選択すると想いがS3に届くよ。