ExmentのDBを自動バックアップする
DBバックアップが必要な場合の簡易メモです。
メモなので抜けてたりコマンドミスがあったらry
Nextcloud版もあります。
そっちにはシェルスクリプト版も書いてます。
バックアップ先フォルダの作成と権限の設定
作成するバックアップ先は自由に変更してください。
sudo mkdir -p /var/backups/exment/db
sudo chown -R root:root /var/backups/exment
sudo chmod -R 750 /var/backups/exment
パスワードの設定ファイルを作成する
cron使うのでパスワード直書きを避けるためです。
sudo vi /root/.exment_db.cnf
以下を追加
[client]
user=exment
password="パスワードを入力してください"
host=localhost
sudo chmod 600 /root/.exment_db.cnf
バックアップテスト(接続確認)
設定ファイルを使ってバックアップが作成できるかテストします。
※テストファイルは確認後に消しても大丈夫です。
sudo mysqldump --defaults-extra-file=/root/.exment_db.cnf --single-transaction --default-character-set=utf8mb4 exment_database | gzip > /var/backups/exment/db/exment_db_test.sql.gz
Cronでやる場合
追加する
sudo crontab -u root -e
以下のように設定する
0 4 * * * mysqldump --defaults-extra-file=/root/.exment_db.cnf --single-transaction --routines --events --hex-blob --default-character-set=utf8mb4 exment_database | gzip > /var/backups/exment/db/exment_db_$(date +\%F_\%H-\%M-\%S).sql.gz
古いバックアップを自動削除する
古いバックアップの削除 (4:10に実行)
10 4 * * * find /var/backups/exment/db/ -name "exment_db_*.gz" -mtime +7 -delete