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