From 3be2fd9cfb443886ffc94caa36c46e5f4c8b43f4 Mon Sep 17 00:00:00 2001 From: zeus Date: Thu, 16 Dec 2021 17:30:54 +0200 Subject: [PATCH] bash backup --- .gitignore | 4 ++ src-local/mybackups/README | 1 + src-local/swarmlab_backup_service.sh | 58 ++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 src-local/mybackups/README create mode 100755 src-local/swarmlab_backup_service.sh diff --git a/.gitignore b/.gitignore index a1e5b44..09a09ec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,11 @@ node_modules src-local/instance/ src-local/builders/ + !./src-local/hybrid/connect/container-stop.sh +!src-local/mybackups/README + +src-local/mybackups/ src-local/hybrid/connect/ src-local/hybrid/keys.json src-local/logs diff --git a/src-local/mybackups/README b/src-local/mybackups/README new file mode 100644 index 0000000..876ec9d --- /dev/null +++ b/src-local/mybackups/README @@ -0,0 +1 @@ +Here you can see all backups diff --git a/src-local/swarmlab_backup_service.sh b/src-local/swarmlab_backup_service.sh new file mode 100755 index 0000000..a998aef --- /dev/null +++ b/src-local/swarmlab_backup_service.sh @@ -0,0 +1,58 @@ +#!/bin/bash + + + +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + TARGET="$(readlink "$SOURCE")" + if [[ $TARGET == /* ]]; then + SOURCE="$TARGET" + else + DIR="$( dirname "$SOURCE" )" + SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located + fi +done + +SRPATH="$( dirname "$SOURCE" )" +SFPATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +if [ "$SFPATH" != "$SRPATH" ]; then + RDIR=$SRPATH # relativ path directory +fi + +cwdir=$PWD +wdir=$SFPATH + +if [[ $# -eq 0 ]] ; then + echo 'no service' + exit 1 +fi + + +if [[ -z "$1" ]] ; then + echo 'no service' + exit 1 +fi + +service=$1 + servicebase=$(echo $service | cut -d'_' -f1) + +#volumetmp=$(docker inspect --format "{{json .Mounts }}" $service | jq .[] | jq '.Destination') +#volumetmp=$(docker inspect --format "{{json .Mounts }}" $service | jq .[] | jq '.Destination .Source' | jq . -s) +# $(docker inspect --format '{{json .Mounts }}' microservice-xelatexthesis_masterservice_1 | jq '.[] | {local: .Source, dest: .Destination}') + +date=$(date '+%Y-%m-%d-%H-%M') +volume=1 + docker inspect --format '{{json .Mounts }}' microservice-xelatexthesis_masterservice_1 | jq -c '.[]' | while IFS=$"\n" read -r line; do + Local=$(echo "$line" | jq -r '.Source') + Dest=$(echo "$line" | jq -r '.Destination') + if [[ $Local == *"$servicebase"* ]]; then + v=v${volume} + docker run --rm --volumes-from $service -v $SFPATH/mybackups:/backup alpine /bin/sh -c "mkdir -p /backup/${service}.${date}; tar -zcvf /backup/${service}.${date}/$v.tar.gz $Dest; echo \"Local:$Local Dest:$Dest\" > /backup/${service}.${date}/$v.info " + ((volume++)) + fi +done + + + + +