Add backup script

This commit is contained in:
Derek Lugowski
2026-08-23 07:59:59 +00:00
parent 6ffbedf47c
commit 5deec8533e
2 changed files with 61 additions and 0 deletions
+2
View File
@@ -1 +1,3 @@
.discord .discord
.database
*.swp
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
start=$(date +%s)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
WEBHOOK_URL=$(cat "${SCRIPT_DIR}/.discord")
DATABASE_PASSWORD=$(cat "${SCRIPT_DIR}/.database")
send_discord_message() {
local message="$1"
local content="`date +\"%Y/%m/%d-%H:%M:%S\"` - $message"
curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"$content\"}" "$WEBHOOK_URL"
}
#Enable maintenance mode
php8.3 /var/www/nextcloud/occ maintenance:mode --on
if [ $? -ne 0 ]; then
send_discord_message "Failed to enable maintenance mode."
exit 1
fi
#Backup nextcloud directory
echo "Backing up nextcloud directory"
rsync -Aax /var/www/nextcloud/ /mnt/backup/nextcloud/
if [ $? -ne 0 ]; then
send_discord_message "Failed to backup nextcloud directory."
exit 1
fi
#Backup database
TEMP_FILE="/mnt/backup/db_backups/nextcloud-sqlbackup.bak.tmp"
FINAL_FILE="/mnt/backup/db_backups/nextcloud-sqlbackup.bak"
echo "Backing up database"
export MYSQL_PWD="$DATABASE_PASSWORD"
mysqldump --single-transaction --no-tablespaces -h localhost -u cloud_db nextcloud > "$TEMP_FILE"
if [ $? -ne 0 ]; then
send_discord_message "Failed to backup database."
exit 1
fi
mv "$TEMP_FILE" "$FINAL_FILE"
#Backup data directory
echo "Backing up data directory"
rsync -Aax /mnt/cloud/ /mnt/backup/data/
if [ $? -ne 0 ]; then
send_discord_message "Failed to backup data directory."
exit 1
fi
#Disable maintenance mode
php8.3 /var/www/nextcloud/occ maintenance:mode --off
if [ $? -ne 0 ]; then
send_discord_message "Failed to disable maintenance mode."
fi
end=$(date +%s)
elapsed=$((end - start))
send_discord_message "SUCCESS! Finished Nextcloud backup in $elapsed seconds."