Nextcloud の バックアップスクリプト AWS S3版

先日作ったNextcloudのSQLのバックアップスクリプトですが、
やっぱりFTPはやめよー と思ってAWS S3にバックアップする事にしました。
なので、その変更とAWS CLIのインストールメモ。

広告

AWS CLI のインストール

まずはpython3-pip。


# apt install python3-pip

//バージョンの確認するなら↓
# pip3 --version

そしてインストール。


# pip3 install awscli --upgrade --user

# aws --version
Command 'aws' not found, but can be installed with:

となるので、


# apt  install awscli

今度は設定


# aws configure
AWS Access Key ID [None]: {アクセスキー}
AWS Secret Access Key [None]:{シークレットキー}
Default region name [None]: ap-northeast-1
Default output format [None]: json


# aws s3 ls
//S3のバケットが表示されればOK

バックアップスクリプト


#!/bin/sh

DST="root/nextcloud-bk"
DBUSER='{ユーザー名}'
DBPASSWORD='{DBパスワード}'
DBHOST='{ホスト}'
DBNAME='{DB名}'
DATETIME=`date +%Y%m%d`
DELDATA=`date -d -7day +%Y%m%d`

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on

mkdir /${DST}/${DATETIME}
mkdir /${DST}/${DATETIME}/config
mkdir /${DST}/${DATETIME}/data
mkdir /${DST}/${DATETIME}/themes

rsync -Aax /var/www/nextcloud/config/ /${DST}/${DATETIME}/config/
rsync -Aax /var/www/nextcloud/data/ /${DST}/${DATETIME}/data/
rsync -Aax /var/www/nextcloud/themes/ /${DST}/${DATETIME}/themes/

SQL="mysqldump -h $DBHOST -u $DBUSER -p$DBPASSWORD --no-tablespaces $DBNAME | gzip > /$DST/$DATETIME/bksql.dump.gz"
eval $SQL

tar zcf /${DST}/${DATETIME}-bkup.tar.gz -C / ${DST}/${DATETIME}

chmod 664 /${DST}/${DATETIME}-bkup.tar.gz

aws s3 cp /${DST}/${DATETIME}-bkup.tar.gz  s3://バケット/${DATETIME}-bkup.tar.gz
aws s3 rm s3://バケット/${DELDATA}-bkup.tar.gz

rm -r /${DST}/${DATETIME}
rm /${DST}/${DATETIME}-bkup.tar.gz

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

# chmod +x awsbackup.sh

こんな感じでcronにセット。
S3ならストレージ安いから7日で消さないでも全然良いと思うです。

2022/2/9に追記
実行結果をメールで飛ばしたかったけど、設定に苦戦したのでメモ。

cronのログをメール送信

わざわざサーバーに入って確認したくないからメールで飛ばす事に。
でもMAILTOで飛ばなかったのでちょっと苦戦しました。

# apt install ssmtp
# apt install mailutils

ssmtpを使う事にしました。
mailutilsをインストしてなくてmailコマンドが使えなかったのが苦戦の原因。

# vim /etc/ssmtp/ssmtp.conf
 
root=backup@hoge.hoge

mailhub=smtp.hoge.hoge:587

AuthUser=backup@hoge.hoge
AuthPass=hogePass
UseTLS=YES
UseSTARTTLS=YES

hostname=hoge.hoge

FromLineOverride=YES

SMTPの設定。

# crontab -e
 
0 1 * * * /root/next_backup.sh 2>&1 | mail -s 'Backup Log' -r 送信元アドレス@hoge.hoge 送信先アドレス@hoge.hoge 

実行ー-


Maintenance mode enabled
Completed 256.0 KiB/27.2 MiB (1.3 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/27.2 MiB (2.4 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/27.2 MiB (3.4 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/27.2 MiB (4.4 MiB/s) with 1 file(s) remaining 
Completed 1.2 MiB/27.2 MiB (5.3 MiB/s) with 1 file(s) remaining 
Completed 1.5 MiB/27.2 MiB (6.2 MiB/s) with 1 file(s) remaining 
Completed 1.8 MiB/27.2 MiB (7.1 MiB/s) with 1 file(s) remaining 
:::省略
Completed 26.7 MiB/27.2 MiB (20.2 MiB/s) with 1 file(s) remaining
Completed 27.0 MiB/27.2 MiB (20.0 MiB/s) with 1 file(s) remaining
Completed 27.2 MiB/27.2 MiB (19.6 MiB/s) with 1 file(s) remaining
upload: ../root/nextcloud-bk/20220209-bkup.tar.gz to s3://nextcloudback/20220209-bkup.tar.gz
delete: s3://nextcloudback/20220202-bkup.tar.gz
Maintenance mode disabled

とメールでLOGが届きます。
これで毎日監視できる。

ではでは


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください