laravel-backup-db maintained by yakovenko
Laravel Database Backup
yakovenko/laravel-backup-db - Simple Laravel database backup command with automatic cleanup options, secure MySQL connection, comprehensive logging, and configurable storage support.
Installation
Requirements
- PHP : ^8.0
- Laravel : ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- MySQL database
mysqldumpcommand available in system PATH
Install the Package
You can install the package via Composer:
composer require yakovenko/laravel-backup-db
Configuration
Publish the config file:
php artisan vendor:publish --provider="Yakovenko\LaravelBackupDb\LaravelBackupDbServiceProvider" --tag=config
This will create config/backup-db.php with the following options:
return [
// Number of days to keep backups
'cleanup_days' => env('BACKUP_DB_CLEANUP_DAYS', 15),
// Enable automatic backup scheduling
'auto_schedule' => env('BACKUP_DB_AUTO_SCHEDULE', true),
// Time when backup should run (24-hour format)
'schedule_time' => env('BACKUP_DB_SCHEDULE_TIME', '00:15'),
// How often backup should run: 'daily', 'weekly', 'monthly'
'schedule_frequency' => env('BACKUP_DB_SCHEDULE_FREQUENCY', 'daily'),
// Day for weekly/monthly backups (0=Sunday, 1=Monday, etc. for weekly; 1-31 for monthly)
'schedule_day' => env('BACKUP_DB_SCHEDULE_DAY', 1),
// Storage disk for backups
'storage_disk' => env('BACKUP_DB_STORAGE_DISK', 'local'),
// Storage directory for backups
'storage_directory' => env('BACKUP_DB_STORAGE_DIRECTORY', 'backup'),
// Enable logging
'logging' => env('BACKUP_DB_LOGGING', true),
];
Automatic Scheduling
The package automatically schedules backups when auto_schedule is enabled in config. No need to manually add to Kernel.php!
Schedule Configuration Examples
Daily Backup at 2:30 AM
BACKUP_DB_SCHEDULE_TIME=02:30
BACKUP_DB_SCHEDULE_FREQUENCY=daily
Weekly Backup on Fridays at 1:00 AM
BACKUP_DB_SCHEDULE_TIME=01:00
BACKUP_DB_SCHEDULE_FREQUENCY=weekly
BACKUP_DB_SCHEDULE_DAY=5
Monthly Backup on 15th at 3:00 AM
BACKUP_DB_SCHEDULE_TIME=03:00
BACKUP_DB_SCHEDULE_FREQUENCY=monthly
BACKUP_DB_SCHEDULE_DAY=15
Disable Automatic Scheduling
BACKUP_DB_AUTO_SCHEDULE=false
Note:
- Time format:
HH:MM(24-hour format) - Weekly days: 0=Sunday, 1=Monday, ..., 6=Saturday
- Monthly days: 1-31
Usage
Create backup only
php artisan yas:backup --run
Create backup and delete old backups (older than configured days)
php artisan yas:backup --auto
Delete all backups and create new one
php artisan yas:backup --all
Delete only old backups (older than configured days)
php artisan yas:backup --d
Author
License
MIT