- подключить в composer.json:
"spatie/laravel-backup": "^3.0.0",
"league/flysystem-aws-s3-v3": "~1.0", // s3 storage
"irazasyed/telegram-bot-sdk": "~2.2" // отправка telegram уведомлений
- Подключить laravel-backup:
'providers' => [
// ...
Spatie\Backup\BackupServiceProvider::class,
];
- Опубликовать конфиг
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
- Добавить в .env секцию для s3, email и telegram:
# Backup configuration
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
NOTIFY_FROM_EMAIL=
NOTIFY_TO_EMAIL=
S3_BACKUP_KEY=
S3_BACKUP_SECRET=
S3_BACKUP_REGION=
S3_BACKUP_BUCKET=
- В filesystem.php добавить хранилища:
'localBackup' => [
'driver' => 'local',
'root' => storage_path('backups'),
],
's3Backup' => [
'driver' => 's3',
'key' => env('S3_BACKUP_KEY'),
'secret' => env('S3_BACKUP_SECRET'),
'region' => env('S3_BACKUP_REGION'),
'bucket' => env('S3_BACKUP_BUCKET'),
],
- Скачать и развернуть в папке приложения.
- Прописать биндинг в composer.json
- прописать в секции email:
'mail' => [
'from' => env('NOTIFY_FROM_EMAIL'),
'to' => env('NOTIFY_TO_EMAIL'),
],
- в telegram:
'telegram' => [
'bot_token' => env('TELEGRAM_BOT_TOKEN'),
'chat_id' => env('TELEGRAM_CHAT_ID'),
'async_requests' => env('TELEGRAM_ASYNC_REQUESTS', false),
'disable_web_page_preview' => env('TELEGRAM_DISABLE_WEB_PAGE_PREVIEW', true),
],
- подключить хранилища:
'disks' => [
'localBackup', 's3Backup'
],
-
прописать интересующие каналы уведомлений
-
Переопределить handler в секции notifications:
'handler' => \BackupNotifier\BackupNotifier::class, // класс указывается согласно биндингу в composer.json
Добавить слушатели событий:
$events->listen(
BackupWasSuccessful::class,
BackupNotifier::class.'@correctBackupWasSuccessful'
);
$events->listen(
BackupHasFailed::class,
BackupNotifier::class.'@correctBackupHasFailed'
);
Список команд доступен в artisan