diff --git a/sbin/vol-compress b/sbin/vol-compress old mode 100755 new mode 100644 index ebb9607..223fd95 --- a/sbin/vol-compress +++ b/sbin/vol-compress @@ -1,9 +1,40 @@ #!/bin/bash +# +# Run this script as root inside a service directory. +# + if [ ! -d "volumes" ]; then echo 'There is no data to archive ! Make sure you are in a service directory with persistent data (ie. must be a "volumes" directory there).' exit fi -ARCHIVE=${PWD##*/}.tar.zst -tar --zstd -cf $ARCHIVE -C volumes . +# Dump mysql +if [ -d "volumes/mysql" ]; then + CONTAINER_NAME=$(echo ${PWD##*/} | sed -e 's/\.//g')_mariadb + DB_USER=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$MYSQL_USER"') + DB_PASSWORD=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$MYSQL_PASSWORD"') + DB_NAME=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$MYSQL_DATABASE"') + DUMP_NAME=$CONTAINER_NAME_$(date +%F_%T).sql + if [ -f "volumes/*.sql" ]; then + rm volumes/*.sql + fi + nerdctl exec -e $CONTAINER_NAME mariadb-dump -u $DB_USER $DB_NAME > volumes/$DUMP_NAME +fi + +# Dump postgres +if [ -d "volumes/postgres" ]; then + CONTAINER_NAME=$(echo ${PWD##*/} | sed -e 's/\.//g')_postgres + DB_USER=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_USER"') + DB_PASSWORD=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_PASSWORD"') + DB_NAME=$(nerdctl exec $CONTAINER_NAME bash -c 'echo "$POSTGRES_DATABASE"') + DUMP_NAME=$CONTAINER_NAME_$(date +%F_%T).sql + if [ -f "volumes/*.sql" ]; then + rm volumes/*.sql + fi + nerdctl exec -e $CONTAINER_NAME pg_dump -U $DB_USER $DB_NAME > volumes/$DUMP_NAME +fi + +# Compress all volumes excerpt mysql and postgres into the staorage box (pubkey needed) +BACKUP=${PWD##*/}.tar.zst +ssh u441501@u441501.your-storagebox.de tar --zstd --exclude='volumes/mysql' --exclude='volumes/postgres' -cf - volumes > $BACKUP diff --git a/sbin/vol-extract b/sbin/vol-extract index aefbed2..447231d 100755 --- a/sbin/vol-extract +++ b/sbin/vol-extract @@ -6,3 +6,5 @@ if [ -d "volumes" ]; then fi mkdir volumes tar --zstd --same-owner -xvf $ARCHIVE -C volumes + +# Add import .sql if db