WordPressのサーバー移設の際は,バックアップと復元を行うpluginのUpdraftPlusが大いに役に立った.
一つだけ不満なのがバックアップの開始時間が指定できないこと.有料プランを使えばできるのだがお金を払ってまで時間指定はしたくない.そこでOSのコマンドを使ってこのバックアップを自動化しようとチャレンジ開始.まずはデータベースのバックアップでこちらのサイトを参考にした.
Databaseのバックアップと圧縮
パスワードを記述するファイルをホームディレクトリに作成して、それをmysqldumpのオプションで読み込む.
$ cd
$ vi .my.cnf
以下の内容を記述する。ここでは仮にパスワードを123456とする.
[mysqldump]
password="123456"
データベースをバックアップするコマンド。user_nameはMySQLのWordpressのユーザ名、db_nameはWordpressのデータベース名。mysqldump.sqlは拡張子以外は任意な(お好きな)名前で。
$ mysqldump --defaults-file=/home/user_name/.my.cnf -u user_name --databases db_name > mysqldump.sql
さらに、バックアップしたファイルを圧縮するには以下のコマンドを記述。
$ mysqldump --defaults-file=/home/user_name/.my.cnf -u user_name --databases db_name | gzip > mysqldump.sql.gz
シェルスクリプトの作成
cronで実行するシェルスクリプトを作成する。
スクリプトは以下の通り。
#!/bin/bash
fname="mysqldump_"$(LANG=en_US.UTF-8 date +%Y%m%d-%H%M%S)".sql.gz"
/usr/bin/mysqldump --defaults-file=/home/user_name/.my.cnf -u user_name --databases db_name | gzip > ${fname}
スクリプトに実行権限を付与する。
# chmod u+x backup_db.sh
動作確認。mysqldump_hogehoga.sql.gzというファイルが作成されていればOK。
./backup_db.sh
cronの設定
作成したシェルスクリプトをcronで実行できるようにする。
毎日午前5時に実行するには以下のような記述を追加。
$ sudo vi /etc/crontab
00 5 * * * user_name /home/user_name/backup_db.sh
cronを再起動する。
$ sudo systemctl restart cron
自分の場合はこのようなファイルが/home/user_nameの中にできていた.(4時開始のcron)
wordpressdump_20210211-040001.sql.gz
Google Driveへの転送
rcloneの設定、rcloneによるGoogle Driveへの転送はこちらのサイトを参考にした。なおrcloneの本家でのGoogle Driveへのファイル転送についてはこちらのドキュメントを参照のこと。
gdriveとはrclone configにて設定したrcloneのプロファイル名。
directoryの転送
$ rclone copy /path/to/dir/ gdrive:/dir/
Google Driveに転送されたか確認
$ rclone ls gdrive:/dir/