Te explico cómo hacer backup de todo:
Te explico cómo hacer backup de todo:
🐳 Tu entorno actual:
- Laravel (posiblemente en contenedor o en el host)
- PHPMyAdmin (posiblemente en contenedor)
- Base de datos MySQL (posiblemente en contenedor)
- Contenedores Docker varios🛠 Script de Backup Completo (con Docker)
Crea el archivo backup-completo.sh:
#!/bin/bash
# Configuración
FECHA=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/home/tu_usuario/backups"
BACKUP_HOY="$BACKUP_DIR/backup-$FECHA"
# Crear directorio
mkdir -p $BACKUP_HOY
echo "🐳 Iniciando backup completo con Docker..."
# 1. BACKUP DE CONTENEDORES DOCKER
echo "📦 Haciendo backup de contenedores Docker..."
# Lista de contenedores en ejecución
docker ps --format "table {{.Names}}" > $BACKUP_HOY/contenedores-activos.txt
# Backup de volúmenes Docker (si tienes)
docker volume ls -q > $BACKUP_HOY/volumenes-docker.txt
# Backup de imágenes Docker
echo "💾 Guardando lista de imágenes Docker..."
docker images > $BACKUP_HOY/imagenes-docker.txt
# 2. BACKUP DE DATOS DE CONTENEDORES
echo "🗄️ Haciendo backup de bases de datos..."
# Si MySQL está en contenedor (ajusta el nombre del contenedor)
docker exec tu_contenedor_mysql mysqldump -u root -pTuPassword --all-databases > $BACKUP_HOY/mysql-backup.sql
# O si MySQL está en el host:
# mysqldump -u root -pTuPassword --all-databases > $BACKUP_HOY/mysql-backup.sql
# 3. BACKUP DE ARCHIVOS DE PROYECTO
echo "📁 Haciendo backup de archivos del proyecto..."
# Backup de Laravel (donde sea que esté)
if [ -d "/var/www/tu_proyecto_laravel" ]; then
tar -czf $BACKUP_HOY/laravel-backup.tar.gz /var/www/tu_proyecto_laravel
fi
# Backup de configuraciones Docker
if [ -f "docker-compose.yml" ]; then
cp docker-compose.yml $BACKUP_HOY/
fi
# 4. BACKUP DE CONFIGURACIONES DOCKER
echo "⚙️ Haciendo backup de configuraciones..."
docker inspect $(docker ps -q) > $BACKUP_HOY/docker-inspect.json 2>/dev/null || true
# 5. COMPRIMIR TODO
echo "📦 Comprimiendo backup completo..."
tar -czf $BACKUP_DIR/backup-completo-$FECHA.tar.gz -C $BACKUP_DIR "backup-$FECHA"
# Limpiar temporal
rm -rf $BACKUP_HOY
echo "✅ Backup completado: $BACKUP_DIR/backup-completo-$FECHA.tar.gz"🔍 Script para Identificar tu Entorno Docker
Primero, usa este script para ver qué tienes:
#!/bin/bash
echo "🔍 Analizando tu entorno Docker..."
echo "1. Contenedores ejecutándose:"
docker ps
echo ""
echo "2. Todos los contenedores:"
docker ps -a
echo ""
echo "3. Volúmenes Docker:"
docker volume ls
echo ""
echo "4. Imágenes:"
docker images
echo ""
echo "5. Redes Docker:"
docker network lsGuárdalo como analizar-docker.sh y ejecuta:
chmod +x analizar-docker.sh
./analizar-docker.sh🗄️ Backup Específico para Docker Compose
Si usas docker-compose.yml:
#!/bin/bash
FECHA=$(date +%Y-%m-%d)
BACKUP_DIR="/home/tu_usuario/backups"
mkdir -p $BACKUP_DIR
echo "🐳 Backup Docker Compose..."
# 1. Backup del compose file
cp docker-compose.yml $BACKUP_DIR/docker-compose-$FECHA.yml
# 2. Backup de bases de datos
docker-compose exec mysql mysqldump -u root -pTuPassword --all-databases > $BACKUP_DIR/db-$FECHA.sql
# 3. Backup de volúmenes importantes
docker volume ls -q | while read volume; do
echo "Backup volumen: $volume"
docker run --rm -v $volume:/source -v $BACKUP_DIR:/backup alpine tar -czf /backup/volume-$volume-$FECHA.tar.gz -C /source .
done
echo "✅ Backup Docker completado!"🔄 Cómo Restaurar con Docker
Restaurar base de datos:
# Si MySQL está en contenedor
docker exec -i tu_contenedor_mysql mysql -u root -pTuPassword < backup/mysql-backup.sqlRestaurar volúmenes Docker:
docker run --rm -v nombre_volumen:/destino -v $BACKUP_DIR:/backup alpine tar -xzf /backup/volume-nombre_volumen.tar.gz -C /destinoRecrear contenedores:
# Si tienes docker-compose.yml
docker-compose down
docker-compose up -d📅 Automatización con Cron
crontab -e
# Backup completo todos los días a las 2 AM
0 2 * * * /home/tu_usuario/backup-completo.sh
# Backup rápido de BD cada 6 horas
0 */6 * * * /home/tu_usuario/backup-rapido-db.sh🚨 Backup Rápido Solo de lo Crítico
#!/bin/bash
FECHA=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/home/tu_usuario/backups"
# Solo lo más importante
mkdir -p $BACKUP_DIR
# 1. Backup de BD
docker exec tu_contenedor_mysql mysqldump -u root -pTuPassword --all-databases > $BACKUP_DIR/db-$FECHA.sql
# 2. Backup rápido de archivos
tar -czf $BACKUP_DIR/app-$FECHA.tar.gz /var/www/tu_proyecto_laravel
echo "🚀 Backup rápido completado: $BACKUP_DIR/db-$FECHA.sql"📋 Pasos que Debes Seguir:
Primero ejecuta el script de análisis para ver tu entorno
Ajusta los nombres de contenedores en los scripts
Prueba el backup manualmente
Prueba la restauración en un entorno de prueba
Automatiza una vez que funcione
❓ Para Ayudarte Mejor, Necesito Saber:
# Ejecuta esto y dime qué ves:
docker ps
docker volume ls
find /var/www/ -name "artisan" 2>/dev/null¿Puedes ejecutar esos comandos y decirme qué contenedores y proyectos tienes?
Comentarios
Publicar un comentario