Runbook: Docker volume backup
Přehled
Záloha Docker named volumes (Redis data, uploaded files atd.) z hub-alfa a prod-alfa.
Named volumes k zálohování
s60-redis-data— Redis AOF persistence (hub + prod)- Další volumes dle docker-compose.yml jednotlivých služeb
Ruční záloha
# Na cílovém serveru (hub/prod)
ssh root@<server_ip> bash -c '
VOLUME="s60-redis-data"
BACKUP_DIR="/root/backups/volumes"
mkdir -p $BACKUP_DIR
docker run --rm \
-v ${VOLUME}:/data \
-v ${BACKUP_DIR}:/backup \
alpine tar czf /backup/${VOLUME}_$(date +%Y%m%d_%H%M%S).tar.gz -C /data .
echo "Backup done: $(ls -lh ${BACKUP_DIR}/${VOLUME}_*.tar.gz | tail -1)"
'
Restore
ssh root@<server_ip> bash -c '
VOLUME="s60-redis-data"
BACKUP_FILE="/root/backups/volumes/<backup_file>.tar.gz"
# Stop kontejnery které volume používají
cd /opt/<projekt> && docker compose down
# Restore
docker run --rm \
-v ${VOLUME}:/data \
-v /root/backups/volumes:/backup \
alpine sh -c "rm -rf /data/* && tar xzf /backup/$(basename $BACKUP_FILE) -C /data"
# Start kontejnery
docker compose up -d
'
Automatická záloha
Script: /root/projects/sentinel/deploy/docker-volume-backup.sh (TODO: vytvořit cron na Argusu)