aws-cliでR2にバックできると聞いて!!!八丈島より泳いで参った!!!
注)ヒツジは泳げません
要は下記の記事のR2版です。
大まかな手順
- R2バケットの作成
- aws-cliのインストール(前記事でインストールしてたら不要)
- credentialsの記入or書き換え
- bashファイルの作成or変更
詳細な流れ
1.R2バケットの作成~API取得
バケット作成
Cloudflareにログイン後、左側のメニューから「R2>概要」に移動し、画面中央にある「バケットを作成する」ボタンを押してバケット名(名前)を入力します。
他の設定は変更する必要はありません。
API取得
バケットを作成したら、概要のページに戻ります。右側のメニューから「R2 APIトークンの管理」をクリックし、右上の「APIトークンを作成する」を選択し、以下のように設定を行います。
- トークン名:APIの名前。自分が識別できる名前を入力
- 権限:オブジェクトの読み取りと書き込み
- バケットの指定:特定のバケットのみに適用>2で作ったバケット名を選択
設定が終わったら右下の「APIトークンを作成する」をクリックし、次のページで表示されるAPIをメモしておきます。
2.aws-cliのインストール(前記事でインストールしてたら不要)
rootユーザーでインストール(本来ならmisskey/calckeyユーザーでやるのがいいんだけどね)
Linux での AWS CLI バージョン 1 のインストール、更新、アンインストール AWS Command Line Interface
3.credentialsの記入or書き換え
新規作成の場合
ホームディレクトリに戻っていることを確認、(root@aaa:~$)の~
の部分が~
だけになってればOKです。ディレクトリー.aws
を作成、してVimで.aws/credentials
を編集します。
$ mkdir .aws
$ vi .aws/credentials
credentials
の内容はこんな感じで記入して保存します。
[default]
aws_access_key_id=(アクセスキー)
aws_secret_access_key=(シークレットキー)
region = auto
書き換えの場合
AWSからの切り替えの場合、すでにファイルが作成されていると思うので、一度バックアップを取ります
$ cd .aws
$ cp credentials credentials.old
credentials
が現行の設定ファイル、credentials.old
がバックアップファイルになります。このまま、vi credentials
で編集、内容は上記の新規作成と同じ要領で記載します。
4.bashファイルの作成or変更
次にバックアップスクリプトを作成・変更します。/usr/local/bin
に保存・vi backup.sh
でファイルを作成しています。
$ cd /usr/local/bin
$ vi backup.sh
backup.sh
の中身はこんな感じに記載します。
#!/bin/bash
# 時刻取得
TIME=$(date +"%Y%m%d%H%M")
# バックアップ開始
su - postgres << BASH
echo "Backup start."
# バックアップディレクトリに移動
cd /var/backup
# バックアップファイル作成
pg_dumpall | gzip -c > firefish$TIME-backup.gz
# パーミッション・権限変更
exit
chmod 744 firefish$TIME-backup.gz
BASH
# rootユーザーに変更
su - root << BASH
echo "Send backup file."
# S3に転送
~/.local/bin/aws s3 cp /var/backup/firefish$TIME-backup.gz s3://(バケット名)/backup/firefish$TIME-backup.gz --endpoint-url (エンドポイント)
echo "Backup complete."
BASH
S3からの変更点は22行目のみ。バケット名の変更とエンドポイントオプションを追加します。変更が終わったらパーミッションを755に変更(初回のみ)し、bashファイルを実行してみます。
$ chmod 755 backup.sh
$ bash backup.sh
無事に送信できたら完了です、お疲れさまでした。
補足:cronを設定する
【Firefish/Misskey】バックアップしたデータベースをS3に転送する | ほしぱそ。
やってることは同じなのでここ参照して(適当)