#!/bin/bash # Docker backup script for NewsArchiver # This script backs up archived data from the Docker volume to a local or NAS location set -e BACKUP_DIR="${BACKUP_DIR:-./backups}" TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_NAME="newsarchiver_backup_${TIMESTAMP}.tar.gz" echo "Starting backup..." echo "Backup location: ${BACKUP_DIR}/${BACKUP_NAME}" # Create backup directory mkdir -p "$BACKUP_DIR" # Create backup from the Docker volume docker run --rm \ -v newsarchiver_data:/data:ro \ -v "${BACKUP_DIR}:/backup" \ alpine tar -czf "/backup/${BACKUP_NAME}" -C /data . echo "Backup complete: ${BACKUP_DIR}/${BACKUP_NAME}" echo "" echo "To restore from backup:" echo " 1. Stop the container: docker-compose down" echo " 2. Remove the volume: docker volume rm newsarchiver_data" echo " 3. Create a new volume: docker volume create newsarchiver_data" echo " 4. Restore: docker run --rm -v newsarchiver_data:/data -v \${BACKUP_DIR}:/backup alpine tar -xzf /backup/${BACKUP_NAME} -C /data" echo " 5. Start: docker-compose up -d"