
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.
- 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
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
Podemos ver que el comando exportó el backup correctamente localmente si nos dirigimos a la ruta storage/app/Laravel
Integración con Dropbox
Nos registramos en Dropbox en la siguiente dirección, haciendo clic en Consola de Aplicaciones
Creamos una nueva aplicación
Configuramos los permisos para que nuestra aplicación pueda guardar en Dropbox
Generamos el 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
'providers' => [
...
App\Providers\DropboxServiceProvider::class,
...
]
Registramos un nuevo sistema de archivos en el archivo
"disks" => [
"dropbox" => [
"driver" => "dropbox",
"authorizationToken" => env("DROPBOX_AUTH_TOKEN"),
],
Configuramos el service provider
<?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.
'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
Verificamos que nuestro backup está en Dropbox en el siguiente enlace
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