Laravel создание бекапа в Google Drive

Устанавливаем

composer require spatie/laravel-backup

Добавляем в провайдеры

'providers' => [
     ...
     Spatie\\Backup\\BackupServiceProvider::class
]

Публикуем конфиг

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

Создаем расписание для бэкапа

$schedule->command('backup:clean')->dailyAt('01:30');
$schedule->command('backup:run --only-db')->dailyAt('01:35');

Правим app/backup.php

'disks' => [
    'google',                
    'local',             
],

Устанавливаем flysystem адаптер

composer require nao-pon/flysystem-google-drive:~1.1

Создаем новый сервиспровайдер

php artisan make:provider GoogleDriveServiceProvider

В boot() сексию этого сервиспровайдера дописываем

\\Storage::extend('google', function ($app, $config) {
    $client = new \\Google_Client();
    $client->setClientId($config['clientId']);
    $client->setClientSecret($config['clientSecret']);
    $client->refreshToken($config['refreshToken']);
    $service = new \\Google_Service_Drive($client);
    $adapter = new \\Hypweb\\Flysystem\\GoogleDrive\\GoogleDriveAdapter($service, $config['folderId']);
    return new \\League\\Flysystem\\Filesystem($adapter);
});

Регистрируем в config/app.php этот сервис провайдер GoogleDriveServiceProvider
В конфиг config/filesystems.php прописуем

return [
  
    // ...
    
    'disks' => [
        
        // ...
        
        'google' => [
            'driver' => 'google',
            'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
            'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
            'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
            'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'),
        ],
        
        // ...
        
    ],
    
    // ...
];

Правим файл окружения .env и добавляем

GOOGLE_DRIVE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=xxx
GOOGLE_DRIVE_REFRESH_TOKEN=xxx
GOOGLE_DRIVE_FOLDER_ID=null

С ларавелом закончили, дальше заходим в https://console.developers.google.com/
Создаем новый проект, выберем Drive API
Заполняем

Laravel создание бекапа в Google Drive

Все
Проверить работает ли все можно командой

backup:run --only-db
Оставить комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *