Te explico cómo hacer backup de todo:

 Te explico cómo hacer backup de todo:

🐳 Tu entorno actual:

text
- 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:

bash
#!/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:

bash
#!/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 ls

Guárdalo como analizar-docker.sh y ejecuta:

bash
chmod +x analizar-docker.sh
./analizar-docker.sh

🗄️ Backup Específico para Docker Compose

Si usas docker-compose.yml:

bash
#!/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:

bash
# Si MySQL está en contenedor
docker exec -i tu_contenedor_mysql mysql -u root -pTuPassword < backup/mysql-backup.sql

Restaurar volúmenes Docker:

bash
docker run --rm -v nombre_volumen:/destino -v $BACKUP_DIR:/backup alpine tar -xzf /backup/volume-nombre_volumen.tar.gz -C /destino

Recrear contenedores:

bash
# Si tienes docker-compose.yml
docker-compose down
docker-compose up -d

📅 Automatización con Cron

bash
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

bash
#!/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:

  1. Primero ejecuta el script de análisis para ver tu entorno

  2. Ajusta los nombres de contenedores en los scripts

  3. Prueba el backup manualmente

  4. Prueba la restauración en un entorno de prueba

  5. Automatiza una vez que funcione

❓ Para Ayudarte Mejor, Necesito Saber:

bash
# 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

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Instalar Docker en Ubuntu Server usando docker.io

Tutorial de Carpetas y Directorios en Ubuntu Linux