#!/bin/bash # filepath: /home/yazoo/appdev/duptest/backup_nc_critical.sh # --- Common Variables --- NEXTCLOUD_CONTAINERS=("nc6" "nc6_govod" "nc6_cron" "nc6_clamav" "nc6_db" "nc6_onlyoffice" "nc6_redis") DUPLICATI_CONTAINER="nextcloud_duplicati" DUPLICATI_CLI="/app/duplicati/duplicati-cli" MAIL_URL="smtp://smtp.qq.com:587?starttls=always" MAIL_FROM="larry1chan@qq.com" MAIL_USER="larry1chan@qq.com" MAIL_PASS="bnnxkyaajruteega" MAIL_TO="larry1chan@gmail.com" COMMON_OPTS="--send-mail-url=\"$MAIL_URL\" --send-mail-from=\"$MAIL_FROM\" --send-mail-any-operation=false --send-mail-password=$MAIL_PASS --send-mail-username=\"$MAIL_USER\" --send-mail-to=\"$MAIL_TO\" --encryption-module= --compression-module=zip --dblock-size=50mb --no-encryption=true --disable-module=console-password-input" # --- Backup Job Definitions --- JOBS=( "Nextcloud db|/config/BAWCJCSDVZ.sqlite|DB-2|/mnt/db/|file:///backups/nc/db/" "Nextcloud es_index|/config/AXUHBDDMXV.sqlite|DB-3|/mnt/es_index/|file:///backups/nc/es_index/" "Nextcloud oo_data|/config/LPVNROTOBP.sqlite|DB-4|/mnt/oo_data/|file:///backups/nc/oo_data/" "Nextcloud clamav|/config/UUBOPCEJTB.sqlite|DB-5|/mnt/clamav/|file:///backups/nc/clamav/" "Nextcloud files|/config/KWDLIRMVDX.sqlite|DB-6|/mnt/files/|file:///backups/nc/files/" "Nextcloud files - Jennifer|/config/LADZOGOMGJ.sqlite|DB-7|/mnt/jennifer/|file:///backups/nc/jennifer/" "Nextcloud files - Larry|/config/VHNRBJWTOB.sqlite|DB-8|/mnt/larry/|file:///backups/nc/larry/" "Nextcloud files - michelle|/config/NBLWZGCUWA.sqlite|DB-9|/mnt/michelle/|file:///backups/nc/michelle/" "Nextcloud files - mindy|/config/CMLORKRFEV.sqlite|DB-1|/mnt/mindy/|file:///backups/nc/mindy/" ) # JOBS=( # "Nextcloud db|/config/BAWCJCSDVZ.sqlite|DB-2|/mnt/db/|file:///backups/nc/db/" # ) # --- Stop Nextcloud Containers --- echo "Stopping Nextcloud containers..." for c in "${NEXTCLOUD_CONTAINERS[@]}"; do if docker ps --filter "name=$c" --filter "status=running" | grep -q "$c"; then echo "Stopping $c" docker stop "$c" else echo "$c is not running or does not exist." fi done # --- Backup Loop --- for job in "${JOBS[@]}"; do IFS="|" read -r BACKUP_NAME DBPATH BACKUP_ID SRC DST <<< "$job" echo "Starting backup: $BACKUP_NAME" docker exec -i "$DUPLICATI_CONTAINER" $DUPLICATI_CLI backup "$DST" "$SRC" \ $COMMON_OPTS \ --backup-name="$BACKUP_NAME" \ --dbpath="$DBPATH" \ --backup-id="$BACKUP_ID" echo "Finished backup: $BACKUP_NAME" done # --- Start Nextcloud Containers --- echo "Starting Nextcloud containers..." for c in "${NEXTCLOUD_CONTAINERS[@]}"; do if docker ps -a --filter "name=$c" | grep -q "$c"; then echo "Starting $c" docker start "$c" else echo "$c does not exist." fi done