Files
backup/docker-backup.sh

81 lines
1.4 KiB
Bash

#!/bin/bash
today=$(date +'%F')
volumesdir="/var/lib/docker/volumes"
stackdir="/etc/komodo/stacks"
backupdir="/backups"
# Add services here to stop and backup.
services=(
"$stackdir/caddy_housh_dev"
)
# Add volumes here to backup.
volumes=(
"$volumesdir"
)
function stopServices() {
echo "Stopping services..."
for service in "${services[@]}"; do
cd "$service" && docker compose stop
done
}
function startServices() {
echo "Restarting services..."
for service in "${services[@]}"; do
cd "$service" && docker compose up -d
done
}
function copyStacks() {
echo "Copying stack configuration..."
local dir="$1/stacks"
mkdir "$dir"
for service in "${services[@]}"; do
cp -R "$service" "$dir"
done
}
function copyVolumes() {
echo "Copying volumes..."
local dir="$1/volumes"
mkdir "$dir"
for volume in "${volumes[@]}"; do
cp -R "$volume" "$dir"
done
}
function backup() {
echo "Creating backup..."
tar -cvf "/tmp/$today.tar" "$1"
gzip "/tmp/$today.tar"
cp -R "/tmp/$today.tar.gz" "$backupdir"
# Cleanup temporary files.
rm -rf "$temp" "/tmp/$today.tar" "/tmp/$today.tar.gz"
}
function main() {
# stop services.
stopServices
# Create a temporary directory.
local temp="/tmp/$today"
mkdir "$temp"
# copy stack configuration.
copyStacks "$temp"
# copy stack configuration.
copyVolumes "$temp"
# Create a tar to backup.
backup "$temp"
# Restart services.
startServices
}
main "$@"