Compare commits
1 commit
4b8546c6a1
...
9390804720
Author | SHA1 | Date | |
---|---|---|---|
|
9390804720 |
|
@ -1,10 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
log() {
|
||||
local message="$1"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
stop_container() {
|
||||
local c="$1"
|
||||
log "Stopping $c..."
|
||||
|
@ -21,21 +16,21 @@ enable_maintenance_mode() {
|
|||
local c="$1"
|
||||
local cmd="$2"
|
||||
log "Enabling maintenance mode for $c..."
|
||||
docker exec -u www-data "$c" $cmd || { log "Error enabling maintenance mode"; exit 1; }
|
||||
docker exec -u www-data "$c" "$cmd" || { log "Error enabling maintenance mode"; exit 1; }
|
||||
}
|
||||
|
||||
disable_maintenance_mode() {
|
||||
local c="$1"
|
||||
local cmd="$2"
|
||||
log "Disabling maintenance mode for $c..."
|
||||
docker exec -u www-data "$c" $cmd || { log "Error disabling maintenance mode"; exit 1; }
|
||||
docker exec -u www-data "$c" "$cmd" || { log "Error disabling maintenance mode"; exit 1; }
|
||||
}
|
||||
|
||||
dump_postgres_db() {
|
||||
local c="$1"
|
||||
local user="$2"
|
||||
local path="$3"
|
||||
log "Dumping PostgreSQL db for $c..."
|
||||
log "Dumping PostgreSQL db..."
|
||||
docker exec -t "$c" pg_dumpall --clean --if-exists --username="$user" --file="$path" || { log "Error dumping PostgreSQL"; exit 1; }
|
||||
}
|
||||
|
||||
|
@ -45,30 +40,31 @@ dump_mariadb_db() {
|
|||
local pass="$3"
|
||||
local db="$4"
|
||||
local path="$5"
|
||||
log "Dumping MariaDB/MySQL db for $c..."
|
||||
log "Dumping MariaDB/MySQL db..."
|
||||
docker exec "$c" mariadb-dump --single-transaction -h localhost -u "$user" -p"$pass" "$db" > "$path" || { log "Error dumping MariaDB/MySQL"; exit 1; }
|
||||
}
|
||||
|
||||
dump_sqlite_db() {
|
||||
local src="$1"
|
||||
local dst="$2"
|
||||
log "Dumping SQLite db for $c..."
|
||||
log "Dumping SQLite db..."
|
||||
sqlite3 "$src" ".backup $dst" || { log "Error dumping SQLite"; exit 1; }
|
||||
}
|
||||
|
||||
run_duplicati_backup() {
|
||||
local dest="$1"
|
||||
local name="$2"
|
||||
local versions="$3"
|
||||
local sftp_user="$4"
|
||||
local sftp_pass="$5"
|
||||
local fingerprint="$6"
|
||||
local c="$1"
|
||||
local dest="$2"
|
||||
local name="$3"
|
||||
local versions="$4"
|
||||
local sftp_user="$5"
|
||||
local sftp_pass="$6"
|
||||
local passphrase="$7"
|
||||
shift 7
|
||||
local fingerprint="$8"
|
||||
shift 8
|
||||
local sources=("$@")
|
||||
log "Running duplicati backup for $name..."
|
||||
docker exec duplicati duplicati-cli backup "ssh://$dest" "${sources[@]}" \
|
||||
--backup-name="$name backup" \
|
||||
docker exec "$c" duplicati-cli backup "$dest" "${sources[@]}" \
|
||||
--backup-name="$name" \
|
||||
--keep-versions="$versions" \
|
||||
--auth-username="$sftp_user" \
|
||||
--auth-password="$sftp_pass" \
|
||||
|
|
|
@ -1,28 +1,33 @@
|
|||
#!/bin/bash
|
||||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "$0")")
|
||||
SCRIPT_ABS_LOCATION="$(realpath "$(dirname "$0")")"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/cryptpad-backup.env"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/cryptpad-backup.env"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/cryptpad-backup.log"
|
||||
|
||||
log "Cleaning up inactive files..."
|
||||
docker exec "$APP_CONTAINER" /usr/local/bin/node scripts/evict-inactive.js --workdir=/cryptpad || { log "Error cleaning up inactive files"; exit 1; }
|
||||
docker exec cryptpad /usr/local/bin/node scripts/evict-inactive.js --workdir=/cryptpad || { log "Error cleaning up inactive files"; exit 1; }
|
||||
|
||||
log "Cleaning up archived files..."
|
||||
docker exec "$APP_CONTAINER" /usr/local/bin/node scripts/evict-archived.js --workdir=/cryptpad || { log "Error cleaning up archived files"; exit 1; }
|
||||
docker exec cryptpad /usr/local/bin/node scripts/evict-archived.js --workdir=/cryptpad || { log "Error cleaning up archived files"; exit 1; }
|
||||
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"$APP_CONTAINER" \
|
||||
"cryptpad" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR/data" \
|
||||
"$SOURCE_DIR/datastore" \
|
||||
"$SOURCE_DIR/block" \
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
#!/bin/bash
|
||||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "$0")")
|
||||
SCRIPT_ABS_LOCATION="$(realpath "$(dirname "$0")")"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/forgejo-backup.env"; /
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"; /
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/forgejo-backup.env"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/forgejo-backup.log"
|
||||
|
@ -12,13 +16,14 @@ LOG_FILE="$SCRIPT_ABS_LOCATION/forgejo-backup.log"
|
|||
stop_container "$APP_CONTAINER"
|
||||
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"$APP_CONTAINER" \
|
||||
"forgejo" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR"
|
||||
|
||||
start_container "$APP_CONTAINER"
|
||||
|
|
|
@ -8,7 +8,7 @@ declare -a apps=("cryptpad" "immich" "duplicati" "nextcloud" "vaultwarden" "forg
|
|||
# Function to execute the backup script for each application
|
||||
backup_app() {
|
||||
local app=$1
|
||||
"$SCRIPT_ABS_LOCATION/$app/$app-backup.sh"
|
||||
"$SCRIPT_ABS_LOCATION/$app/${app}-backup.sh"
|
||||
}
|
||||
|
||||
# Iterate over each app in the array and call the backup function
|
||||
|
|
|
@ -2,23 +2,34 @@
|
|||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")")
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
source "$SCRIPT_ABS_LOCATION/immich-backup.env"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/immich-backup.env"
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/immich-backup.log"
|
||||
|
||||
DB_CONTAINER="immich_postgres"
|
||||
BACKUP_CONTAINER="duplicati"
|
||||
DB_USER="postgres"
|
||||
SOURCE_DIR="/mnt/data/immich"
|
||||
DB_TMP_BAK_NAME="postgres_$(date +"%Y%m%d").bak"
|
||||
|
||||
dump_postgres_db "$DB_CONTAINER" "$DB_USER" "/var/lib/postgresql/data/$DB_TMP_BAK_NAME"
|
||||
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"$APP_CONTAINER" \
|
||||
"immich" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR/data/library" \
|
||||
"$SOURCE_DIR/data/upload" \
|
||||
"$SOURCE_DIR/data/profile" \
|
||||
|
|
|
@ -2,26 +2,37 @@
|
|||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")")
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
source "$SCRIPT_ABS_LOCATION/nextcloud-backup.env"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/nextcloud-backup.env"
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/nextcloud-backup.log"
|
||||
|
||||
APP_CONTAINER="nextcloud-app"
|
||||
DB_CONTAINER="nextcloud-db"
|
||||
BACKUP_CONTAINER="duplicati"
|
||||
DB_USER="nextcloud"
|
||||
SOURCE_DIR="/mnt/data/nextcloud"
|
||||
DB_TMP_BAK_NAME="nextcloud-db_$(date +"%Y%m%d").bak"
|
||||
|
||||
enable_maintenance_mode "$APP_CONTAINER" "php occ maintenance:mode --on"
|
||||
|
||||
dump_mariadb_db "$DB_CONTAINER" "$DB_USER" "$DB_PASSWORD" "nextcloud" "$SOURCE_DIR/$DB_TMP_BAK_NAME"
|
||||
|
||||
# Cant use $APP_CONTAINER as second parameter here as it contains a hyphen
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"nextcloud" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR/html/data" \
|
||||
"$SOURCE_DIR/html/config" \
|
||||
"$SOURCE_DIR/html/themes" \
|
||||
|
|
|
@ -1,24 +1,33 @@
|
|||
#!/bin/bash
|
||||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")")
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/portainer-backup.env"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/portainer-backup.log"
|
||||
|
||||
APP_CONTAINER="portainer"
|
||||
BACKUP_CONTAINER="duplicati"
|
||||
SOURCE_DIR="/volumes/portainer"
|
||||
|
||||
stop_container "$APP_CONTAINER"
|
||||
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"$APP_CONTAINER" \
|
||||
"portainer" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR"
|
||||
|
||||
start_container "$APP_CONTAINER"
|
||||
|
|
|
@ -2,23 +2,32 @@
|
|||
SCRIPT_ABS_LOCATION=$(realpath "$(dirname "${0}")")
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
source "$SCRIPT_ABS_LOCATION/vaultwarden-backup.env"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/vaultwarden-backup.env"
|
||||
source "$SCRIPT_ABS_LOCATION/../logger.sh"; \
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
source "$SCRIPT_ABS_LOCATION/../common-backup.sh"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
LOG_FILE="$SCRIPT_ABS_LOCATION/vaultwarden-backup.log"
|
||||
|
||||
BACKUP_CONTAINER="duplicati"
|
||||
SOURCE_DIR="/mnt/data/vaultwarden"
|
||||
DB_TMP_BAK_NAME="vaultwarden-db_$(date +"%Y%m%d").sqlite3"
|
||||
|
||||
dump_sqlite_db "$SOURCE_DIR/db.sqlite3" "$SOURCE_DIR/$DB_TMP_BAK_NAME"
|
||||
|
||||
run_duplicati_backup \
|
||||
"$BACKUP_CONTAINER" \
|
||||
"$BACKUP_DESTINATION" \
|
||||
"vaultwarden" \
|
||||
7 \
|
||||
"$SFTP_USERNAME" \
|
||||
"$SFTP_PASSWORD" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$BACKUP_ENCR_PASSPHRASE" \
|
||||
"$SFTP_FINGERPRINT" \
|
||||
"$SOURCE_DIR"
|
||||
|
||||
log "Deleting vaultwarden temp DB backup..."
|
||||
|
|
Loading…
Reference in a new issue