(20) Moodleの自動バックアップとリストア
自動バックアップ機能はMoodleの標準機能に備わっています。
ただし、やっぱり自分でスクリプトを書いてやりたいと考える人の為に手順例を載せておきます。
[1] MySQLデータベースの自動ダンプとサイトの自動バックアップスクリプト
viエディタで下記の内容を書いたテキストファイルを作って、/etc/cron.dailyなどに入れて設定します。
例えば、NASサーバーを別途立ち上げて、そのディスクを/mnt/nasあたりにNFSマウントしてバックアップデータを書き込んではどうでしょうか?
# cd /etc/cron.daily
# vi moodlebackup
以下viで文章を入力します。
MySQLデータベースのrootユーザーのパスワードを2018mysql、moodleデータベースの名前はmoodledatabaseとして書いてあります。
Moodleサイトは、/data/html/moodle以下に、moodleのユーザーデータなどは/data/moodledata以下にあるものとしています。
—–< ここから >—–
#!/bin/bash
# バックアップファイルを何日分残しておくか設定
period=3
# バックアップファイルを保存するディレクトリ設定
dirpath='/mnt/nas'
# ファイル名を定義(ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`
type1="moodle"
type2="moodledata"
# mysqldump実行
mysqldump -u root -p<パスワード> --opt $type1 > $dirpath/$type1$filename.sql
# tar実行
tar cz /data/html/moodle -f $dirpath/$type1$filename.tar.gz
tar cz /data/moodledata -f $dirpath/$type2$filename.tar.gz
# パーミッション変更
chmod 700 $dirpath/$type1$filename.sql
chmod 700 $dirpath/$type1$filename.tar.gz
chmod 700 $dirpath/$type2$filename.tar.gz
# 古いバックアップファイルを削除
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$type1$oldfile.sql
rm -f $dirpath/$type1$oldfile.tar.gz
rm -f $dirpath/$type2$oldfile.tar.gz
exit 0
—–< ここまで >—–
[2]バックアップしたデータを新しいサーバーなどでリストア
下記のような作業で行います。
なお、MySQL上のデータベースmoodledatabaseはあらかじめ作っておきます。
# cp /mnt/nas/moodlesite.tar /data/html/moodlesite.tar
# tar xvf /data/html/moodlesite.tar
# rm /data/html/moodlesite.tar
# cp /mnt/nas/moodledata.tar /data/moodledata.tar
# tar xvf /data/moodledata.tar
# chmod -r 777 /data/moodledata
# rm /data/moodledata.tar
# mysql -u root -p<パスワード> moodledatabase < /mnt/nas/moodledatabase.sql