Last active
April 3, 2025 18:09
-
-
Save michael-milette/68cd1e3cb86e8b3b3ccb10de73a73ef5 to your computer and use it in GitHub Desktop.
Backup Moodle database, moodle files and moodledata files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Moodle Site Backup version 1.1 | |
# Copyright 2005-2020 TNG Consulting Inc (www.tngconsulting.ca) | |
# Author: Michael Milette | |
# License: GNU GPL 3.0 or later. | |
# Installation: Place this script in the APPPATH folder. | |
# Run it as "sudo" or with sufficient permissions. | |
# ------------------------------------------------------------------------------------- | |
# Configuration section - Assumes Moodle's WEBROOT and DATA are under the APPPATH. | |
# ------------------------------------------------------------------------------------- | |
TIMEZONE="America/Toronto" | |
NOW=$(TZ=":$TIMEZONE" date +%Y-%m-%dT%H-%M-%S) | |
PHP="/usr/bin/php" | |
MYSQLDUMP="/usr/local/bin/mysqldump" | |
APPPATH="/var/www" | |
WEBROOT="html" | |
DATA="moodledata" | |
BACKUPPATH="$APPPATH/backups/$NOW" | |
# == Cloudways example == # | |
# PHP="php" | |
# MYSQLDUMP="mysqldump" | |
# APPPATH="/home/99999999.cloudwaysapps.com/zzzzzzzzzz" | |
# WEBROOT="public_html" | |
# DATA="private_html" | |
# BACKUPPATH="/home/master/backups/$NOW" | |
# ------------------------------------------------------------------------------------- | |
# Exit script on error. | |
set -e | |
cd $APPPATH | |
mkdir $BACKUPPATH | |
DBUSER=$(grep CFG-\>dbuser ${APPPATH}/${WEBROOT}/config.php | cut -d \' -f 2) | |
DBPASS=$(grep CFG-\>dbpass ${APPPATH}/${WEBROOT}/config.php | cut -d \' -f 2) | |
DBNAME=$(grep CFG-\>dbname ${APPPATH}/${WEBROOT}/config.php | cut -d \' -f 2) | |
echo | |
echo "Moodle site backup - Please be patient, this can take a while..." | |
echo "Start time: $NOW" | |
echo "Saved in folder: $BACKUPPATH" | |
echo | |
pushd $WEBROOT >/dev/null | |
echo "Running CRON..." | |
$PHP admin/cli/cron.php >/dev/null | |
echo "Clearing Moodle cache..." | |
$PHP admin/cli/purge_caches.php | |
popd >/dev/null | |
echo "Backing up the database..." | |
$MYSQLDUMP -u ${DBUSER} -p${DBPASS} ${DBNAME} > $BACKUPPATH/moodle.sql | |
DBUSER=;DBPASS=;DBNAME= | |
echo "Compressing database backup file..." | |
zip -jq $BACKUPPATH/moodle.sql.zip $BACKUPPATH/moodle.sql | |
rm $BACKUPPATH/moodle.sql | |
echo "Backing up the Moodle files..." | |
zip -qr $BACKUPPATH/moodle.zip ${WEBROOT} | |
echo "Backing up the moodledata files..." | |
zip -qr $BACKUPPATH/moodledata.zip ${DATA} | |
echo "================================================" | |
echo "Moodle Backup Successfully Completed" | |
echo "================================================" | |
echo "Started at $NOW" | |
NOW=$(TZ=":$TIMEZONE" date +%Y-%m-%dT%H-%M-%S) | |
echo "Completed at $NOW" | |
echo "Saved in folder: $BACKUPPATH" | |
echo | |
echo "Verify that files sizes are about consistent with previous backups:" | |
ls -l --block-size=M $BACKUPPATH | |
echo "================================================" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment