first page created…

#!/bin/bash
# Output to console, logfile, and docker log stdout. # fd/1 for stdout
# | tee /proc/1/fd/1 -a $logfile
logfile=/config/docker_backup.log # /config is the location within duplicati docker _data directory

# Get duplicati script event: BEFORE/AFTER
dupevent=${DUPLICATI__EVENTNAME}

# Get duplicati operation event: "Backup", "Cleanup", "Restore", or "DeleteAllButN"
dupopevent=${DUPLICATI__OPERATIONNAME}

if [ $dupopevent == "Backup" ]; then
    event_name=" ${dupopevent} \\"${DUPLICATI__backup_name}\\""
    separator_length=$(( ${#event_name} + 1 ))
    separator=$(printf '=%.0s' $(seq 1 $separator_length))
    printf "\\n" | tee /proc/1/fd/1 -a $logfile
    printf "$separator\\n" | tee /proc/1/fd/1 -a $logfile
    printf "$event_name\\n" | tee /proc/1/fd/1 -a $logfile
    printf "$separator\\n" | tee /proc/1/fd/1 -a $logfile
    printf "Script start: $(date)\\n" | tee /proc/1/fd/1 -a $logfile

    printf "Duplicati event: ${dupevent}\\n" | tee /proc/1/fd/1 -a $logfile

    if [ $dupevent == "BEFORE" ]; then
        printf "Duplicati running BEFORE event script\\n" | tee /proc/1/fd/1 -a $logfile

        printf "Found $(docker ps -aq | wc -l) Docker containers\\n" | tee /proc/1/fd/1 -a $logfile
        containers=$(docker ps -aq)
        total_containers=$(echo "$containers" | wc -w)
        container_counter=0
        printf ".....................................................\\n" | tee /proc/1/fd/1 -a $logfile
        if [ -n "$containers" ]; then
            for container in $containers; do
                container_counter=$((container_counter+1))
                container_name=$(docker inspect --format '{{.Name}}' $container | sed 's/^\\///')
                printf "\\n Stopping container ($container_counter/$total_containers): $container_name ($container)\\n" | tee /proc/1/fd/1 -a $logfile
                docker stop $container > /dev/null 2>&1

                docstate=$(docker inspect -f {{.State.Running}} $container)
                printf "   Container running state: $docstate\\n" | tee /proc/1/fd/1 -a $logfile

                if [ "$docstate" == "false" ]; then
                    printf "   Container stopped\\n" | tee /proc/1/fd/1 -a $logfile
                else
                    printf "Container $container_name ($container) still not running, should be started!!!\\n" | tee /proc/1/fd/1 -a $logfile
                fi
                printf ".....................................................\\n" | tee /proc/1/fd/1 -a $logfile
            done
        else
            printf "No Docker containers found\\n" | tee /proc/1/fd/1 -a $logfile
        fi
    else
        printf "Duplicati running AFTER event script\\n" | tee /proc/1/fd/1 -a $logfile

        printf "Found $(docker ps -aq | wc -l) Docker containers\\n" | tee /proc/1/fd/1 -a $logfile
        printf ".....................................................\\n" | tee /proc/1/fd/1 -a $logfile
        containers=$(docker ps -aq)
        total_containers=$(echo "$containers" | wc -w)
        container_counter=0

        if [ -n "$containers" ]; then
            for container in $containers; do
                container_counter=$((container_counter+1))
                container_name=$(docker inspect --format '{{.Name}}' $container | sed 's/^\\///')
                printf " Starting container ($container_counter/$total_containers): $container_name ($container)\\n" | tee /proc/1/fd/1 -a $logfile
                docker start $container > /dev/null 2>&1

                docstate=$(docker inspect -f {{.State.Running}} $container)
                printf "   Container running state: $docstate\\n" | tee /proc/1/fd/1 -a $logfile

                if [ "$docstate" == "true" ]; then
                    printf "   Container started\\n" | tee /proc/1/fd/1 -a $logfile
                else
                    printf "Container $container_name ($container) still not running, should be started!!!\\n" | tee /proc/1/fd/1 -a $logfile
                fi
                printf ".....................................................\\n" | tee /proc/1/fd/1 -a $logfile
            done
        else
            printf "No Docker containers found\\n" | tee /proc/1/fd/1 -a $logfile
        fi
    fi

    printf "Script stopped: $(date)\\n" | tee /proc/1/fd/1 -a $logfile
    printf "$separator\\n" | tee /proc/1/fd/1 -a $logfile
fi

Screenshot 2024-06-09 at 11.00.02.png

new yayyy moments…