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
