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:

bash
# Ver qu茅 backups tienes
ls -la /home/tu_usuario/backups/

# Ver contenido del backup
tar -tzf backups/backup-completo-2024-01-15.tar.gz

Crear entorno de restauraci贸n:

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

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

Opci贸n B: Si MySQL est谩 en el host

bash
# Restaurar directamente
mysql -u root -pTuPassword < backup-2024-01-15/mysql-backup.sql

Verificar la restauraci贸n:

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

bash
# Si usas Apache
sudo systemctl stop apache2

# O si usas Nginx
sudo systemctl stop nginx

Restaurar archivos:

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

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

bash
# Si tienes docker-compose.yml en el backup
cp backup-2024-01-15/docker-compose.yml ./

# Recrear contenedores
docker-compose down
docker-compose up -d

Verificar contenedores:

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

bash
# Si necesitas restaurar PHPMyAdmin
tar -xzf backup-2024-01-15/phpmyadmin-backup.tar.gz -C /

Restaurar configuraciones PHP:

bash
# Si tienes configuraciones PHP personalizadas
sudo cp backup-2024-01-15/php.ini /etc/php/8.1/apache2/

Restaurar virtual hosts:

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

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

Reiniciar servicios:

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

bash
# 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();
>>> exit

Probar PHPMyAdmin:

bash
# Acceder a PHPMyAdmin desde navegador
# http://tuserver/phpmyadmin

馃啒 Script de Restauraci贸n Automatizada

Crea restaurar-backup.sh:

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

bash
chmod +x restaurar-backup.sh
./restaurar-backup.sh backups/backup-completo-2024-01-15.tar.gz

馃毃 Consejos de Restauraci贸n:

  1. ✅ Siempre prueba en un entorno de desarrollo primero

  2. ✅ Haz backup ANTES de restaurar (por si algo sale mal)

  3. ✅ Verifica cada paso antes de continuar

  4. ✅ Ten a mano las contrase帽as de base de datos

  5. ✅ 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

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