logo javierpoma
Menú
Backup de BD en Dropbox con Laravel

Backup de BD en Dropbox con Laravel

Sube tus backups de base de datos a Dropbox en tu aplicación Laravel.

Siempre es bueno tener un backup de nuestra base de datos de manera diaria en caso ocurra algo en nuestro servidor debido algún fallo o error.

Aquí te muestro brevemente cómo tener un backup de la base de datos de tu aplicación Laravel 9 con Dropbox

Instalación de Laravel

  • Instalar laravel 9.

asa

  • Instalar dependencias javascript.
npm install
  • Crear la bd localmente y registrarla en nuestro archivo .env.

Archivo .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_backup_dropbox
DB_USERNAME=root
DB_PASSWORD=
  • Ejecutar las migraciones.
php artisan migrate

Nuestra base de datos bd

Paquete Spatie Backup

Instalamos el paquete spatie/laravel-backup

composer require spatie/laravel-backup

Para publicar el archivo de configuración del paquete instalado

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

Probamos el backup con el comando

php artisan backup:run

Ejecutando comando backup

Podemos ver que el comando exportó el backup correctamente localmente si nos dirigimos a la ruta storage/app/Laravel

Backups

Integración con Dropbox

Nos registramos en Dropbox en la siguiente dirección, haciendo clic en Consola de Aplicaciones

Registro en Dropbox

Creamos una nueva aplicación

Crear nueva aplicación Dropbox

Datos aplicación Dropbox

Configuramos los permisos para que nuestra aplicación pueda guardar en Dropbox

Tab Permisos

Permisos Dropbox

Generamos el token

Generar token

Guardamos el token en una variable de nuestro archivo .env

DROPBOX_AUTH_TOKEN=**********

Ejecutamos el paquete siguiente para la integración con Dropbox

composer require spatie/flysystem-dropbox

Generamos el service provider

php artisan make:provider DropboxServiceProvider

Registramos el servicio en el archivo

config/app.php
'providers' => [
    ...
    App\Providers\DropboxServiceProvider::class,
    ...
]

Registramos un nuevo sistema de archivos en el archivo

config/filesystems.php
"disks" => [
    "dropbox" => [
        "driver" => "dropbox",
        "authorizationToken" => env("DROPBOX_AUTH_TOKEN"),
    ],

Configuramos el service provider

app/Providers/DropboxServiceProvider.php
<?php

namespace App\Providers;

use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\ServiceProvider;
use League\Flysystem\Filesystem;
use Spatie\Dropbox\Client as DropboxClient;
use Spatie\FlysystemDropbox\DropboxAdapter;
use Storage;

class DropboxServiceProvider extends ServiceProvider
{
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend("dropbox", function ($app, $config) {
            $adapter = new DropboxAdapter(
                new DropboxClient($config["authorizationToken"])
            );

            return new FilesystemAdapter(
                new Filesystem($adapter, $config),
                $adapter,
                $config
            );
        });
    }

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Modificamos que el backup no solo sea local sino también para Dropbox en el archivo config/backup.php.

config/backup.php
'destination' => [
    /*
     * The filename prefix used for the backup zip file.
     */
    'filename_prefix' => '',
    
    /*
     * The disk names on which the backups will be stored.
     */
    'disks' => [
        'local', 'dropbox'
    ],
],

Y listo! ejecutamos el comando

php artisan backup:run

Ejecutar comando backup

Verificamos que nuestro backup está en Dropbox en el siguiente enlace

Backup en Dropbox

Así de sencillo podemos generar el backup de nuestra base de datos de nuestra aplicación Laravel en Dropbox.

Para un próximo artículo estaré publicando de qué manera lo podemos hacer automáticamente a una determinada hora sin estar ejecutando manualmente php artisan backup:run

Dejo el link del proyecto

Compartir


Revisa mis otros posts