Restaurar Backup en Ubuntu Server con Docker
Restaurar Backup en Ubuntu Server con Docker
Te explico paso a paso cómo restaurar tu backup completo:
🔍 Paso 1: Preparación para la Restauración
Verificar el backup:
# Ver qué backups tienes
ls -la /home/tu_usuario/backups/
# Ver contenido del backup
tar -tzf backups/backup-completo-2024-01-15.tar.gzCrear entorno de restauración:
# Crear directorio temporal para extraer
mkdir ~/restauracion
cd ~/restauracion
# Extraer el backup completo
tar -xzf ../backups/backup-completo-2024-01-15.tar.gz🗄️ Paso 2: Restaurar Base de Datos
Opción A: Si MySQL está en contenedor Docker
# Copiar el archivo SQL al contenedor
docker cp backup-2024-01-15/mysql-backup.sql tu_contenedor_mysql:/tmp/backup.sql
# Ejecutar la restauración
docker exec -i tu_contenedor_mysql mysql -u root -pTuPassword < /tmp/backup.sql
# Limpiar
docker exec tu_contenedor_mysql rm /tmp/backup.sqlOpción B: Si MySQL está en el host
# Restaurar directamente
mysql -u root -pTuPassword < backup-2024-01-15/mysql-backup.sqlVerificar la restauración:
# Conectar a MySQL y ver bases de datos
docker exec -it tu_contenedor_mysql mysql -u root -pTuPassword -e "SHOW DATABASES;"📁 Paso 3: Restaurar Archivos de Laravel
Detener el servicio web temporalmente:
# Si usas Apache
sudo systemctl stop apache2
# O si usas Nginx
sudo systemctl stop nginxRestaurar archivos:
# Extraer el backup de Laravel
tar -xzf backup-2024-01-15/laravel-backup.tar.gz -C /
# O si prefieres copiar manualmente
cp -r backup-2024-01-15/var/www/tu_proyecto_laravel/* /var/www/tu_proyecto_laravel/Permisos y propietario:
# Ajustar permisos de Laravel
sudo chown -R www-data:www-data /var/www/tu_proyecto_laravel/storage
sudo chown -R www-data:www-data /var/www/tu_proyecto_laravel/bootstrap/cache
sudo chmod -R 775 /var/www/tu_proyecto_laravel/storage
sudo chmod -R 775 /var/www/tu_proyecto_laravel/bootstrap/cache🐳 Paso 4: Restaurar Docker
Recrear contenedores desde docker-compose:
# Si tienes docker-compose.yml en el backup
cp backup-2024-01-15/docker-compose.yml ./
# Recrear contenedores
docker-compose down
docker-compose up -dVerificar contenedores:
# Ver que todos los contenedores estén ejecutándose
docker ps
# Ver logs por si hay errores
docker logs tu_contenedor_laravel
docker logs tu_contenedor_mysql🔧 Paso 5: Restaurar Configuraciones
Restaurar PHPMyAdmin:
# Si necesitas restaurar PHPMyAdmin
tar -xzf backup-2024-01-15/phpmyadmin-backup.tar.gz -C /Restaurar configuraciones PHP:
# Si tienes configuraciones PHP personalizadas
sudo cp backup-2024-01-15/php.ini /etc/php/8.1/apache2/Restaurar virtual hosts:
# Restaurar configuraciones de sitios
sudo cp backup-2024-01-15/tu_sitio.conf /etc/apache2/sites-available/
sudo a2ensite tu_sitio.conf🚀 Paso 6: Configuración Final de Laravel
Actualizar dependencias:
cd /var/www/tu_proyecto_laravel
# Instalar composer dependencies
composer install --no-dev
# Generar key de Laravel
php artisan key:generate
# Limpiar cache
php artisan config:clear
php artisan cache:clear
php artisan view:clear
# Si usas migraciones
php artisan migrate --forceReiniciar servicios:
# Reiniciar servidor web
sudo systemctl restart apache2
# o
sudo systemctl restart nginx
# Reiniciar PHP-FPM si usas
sudo systemctl restart php8.1-fpm✅ Paso 7: Verificación Final
Probar la aplicación:
# Verificar que Laravel responde
curl -I http://localhost
# Verificar base de datos desde Laravel
cd /var/www/tu_proyecto_laravel
php artisan tinker
>>> \DB::connection()->getPdo();
>>> exitProbar PHPMyAdmin:
# Acceder a PHPMyAdmin desde navegador
# http://tuserver/phpmyadmin🆘 Script de Restauración Automatizada
Crea restaurar-backup.sh:
#!/bin/bash
echo "🔄 Iniciando proceso de restauración..."
# Parámetros
BACKUP_FILE="$1"
MYSQL_CONTAINER="tu_contenedor_mysql"
MYSQL_PASSWORD="TuPassword"
LARAVEL_PATH="/var/www/tu_proyecto_laravel"
if [ -z "$BACKUP_FILE" ]; then
echo "❌ Uso: ./restaurar-backup.sh archivo_backup.tar.gz"
exit 1
fi
if [ ! -f "$BACKUP_FILE" ]; then
echo "❌ Archivo de backup no encontrado: $BACKUP_FILE"
exit 1
fi
# Crear directorio temporal
RESTORE_DIR="./restauracion-temp"
mkdir -p $RESTORE_DIR
echo "📦 Extrayendo backup..."
tar -xzf $BACKUP_FILE -C $RESTORE_DIR
echo "🗄️ Restaurando base de datos..."
docker cp $RESTORE_DIR/*/mysql-backup.sql $MYSQL_CONTAINER:/tmp/restore.sql
docker exec -i $MYSQL_CONTAINER mysql -u root -p$MYSQL_PASSWORD < /tmp/restore.sql
docker exec $MYSQL_CONTAINER rm /tmp/restore.sql
echo "📁 Restaurando archivos Laravel..."
tar -xzf $RESTORE_DIR/*/laravel-backup.tar.gz -C /
echo "🔧 Ajustando permisios..."
sudo chown -R www-data:www-data $LARAVEL_PATH/storage
sudo chown -R www-data:www-data $LARAVEL_PATH/bootstrap/cache
sudo chmod -R 775 $LARAVEL_PATH/storage
sudo chmod -R 775 $LARAVEL_PATH/bootstrap/cache
echo "🐳 Reiniciando contenedores..."
docker-compose down
docker-compose up -d
echo "⚙️ Configurando Laravel..."
cd $LARAVEL_PATH
php artisan config:clear
php artisan cache:clear
php artisan view:clear
echo "🔄 Reiniciando servidor web..."
sudo systemctl restart apache2
# Limpiar
rm -rf $RESTORE_DIR
echo "✅ Restauración completada!"
echo "🌐 Verifica tu aplicación en: http://localhost"Usar el script:
chmod +x restaurar-backup.sh
./restaurar-backup.sh backups/backup-completo-2024-01-15.tar.gz🚨 Consejos de Restauración:
✅ Siempre prueba en un entorno de desarrollo primero
✅ Haz backup ANTES de restaurar (por si algo sale mal)
✅ Verifica cada paso antes de continuar
✅ Ten a mano las contraseñas de base de datos
✅ Documenta cualquier error para futuras restauraciones
📋 Checklist Post-Restauración:
Base de datos restaurada y accesible
Laravel responde sin errores
PHPMyAdmin funciona correctamente
Contenedores Docker ejecutándose
Archivos subidos/media accesibles
Configuraciones aplicadas
SSL/certificados funcionando
Cron jobs ejecutándose
Comentarios
Publicar un comentario