Add backup script
This commit is contained in:
Executable
+59
@@ -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."
|
||||
Reference in New Issue
Block a user