avcodewizard/laravel-backup
最新稳定版本:1.0.0
Composer 安装命令:
composer require avcodewizard/laravel-backup
包简介
A Laravel package for database and storage backup with auto-cleanup.
README 文档
README
A simple Laravel package to automatically backup your database and storage directory, with a Blade-based UI to view, download, and delete backups.
🚀 Features
- 🔄 Daily backup of database and storage (
storage/app/public) - 🧼 Auto-delete backups older than configurable days (default 5 days)
- 🧾 List, download, and delete backups via Blade UI
- 👤 Access control using roles and middleware
- 🛠 Configurable via
config/laravelBackup.php
📥 Installation
Install the package via composer:
composer require avcodewizard/laravel-backup
⚙️ Configuration
Edit the config file at: config/laravelBackup.php
return [ 'backup_path' => storage_path('backups'), 'keep_days' => 5, // Automatically delete backups older than 5 days 'backup_storage_directory' => false, // true or false 'check_access' => false, // Enable/disable role-based access to UI 'allowed_roles' => [], // Role Names Example: ['Admin', 'Super-Admin','Developer', 'Manager'] ];
- If you want's to backup storage directory
'backup_storage_directory' => true, // true or false
🛡️ Access Control
To enable UI access control based on user roles:
- Set
'check_access' => true - Add roles in
'allowed_roles' => ['Admin'] - Ensure your
Usermodel has ahasRole()method (e.g., using spatie/laravel-permission)
Middleware used:
Avcodewizard\LaravelBackup\Http\Middleware\CheckLaravelBackupAccess
🖥️ Web Interface
Access the UI at:
/laravel-backup
Example route setup (already included in the package):
Route::prefix('laravel-backup') ->middleware(['web', \Avcodewizard\LaravelBackup\Http\Middleware\CheckLaravelBackupAccess::class]) ->group(function () { Route::get('/', [BackupController::class, 'index'])->name('laravel-backup.index'); Route::get('/create', [BackupController::class, 'create'])->name('laravel-backup.create'); Route::get('/download', [BackupController::class, 'download'])->name('laravel-backup.download'); Route::delete('/delete', [BackupController::class, 'delete'])->name('laravel-backup.delete'); });
🛠 Usage
Create Backup via Web
- Go to
/laravel-backup - Click Create Backup
- If use want to create backup from ui, make sure to run the queue worker:
php artisan queue:work
Create Backup via Terminal
php artisan backup:run
🧹 Automatic Cleanup
Backups older than keep_days will be deleted automatically.
Add to Scheduler
In app/Console/Kernel.php, add:
$schedule->command('backup:run')->daily();
📂 Backup Storage
Backups are saved in:
storage/backups/
Each backup includes:
YYYY-MM-DD-HH-MM-SS_database.sqlYYYY-MM-DD-HH-MM-SS_storage.zip
🧑💻 Developer Notes
Publish Config & Views
php artisan vendor:publish --tag=laravel-backup
This will publish:
config/laravelBackup.php- Blade views to
resources/views/vendor/laravel-backup/
Middleware Logic
The package uses a configurable middleware to restrict access:
if (!config('laravelBackup.check_access')) return $next($request); $user = Auth::user(); if (!$user) { abort(403, 'Unauthorized - no user authenticated.'); } if (!method_exists($user, 'hasRole')) { abort(403, 'User Role Not Implemented!'); } if (!$user->hasAnyRole(config('laravelBackup.allowed_roles'))) { abort(403, 'Unauthorized - insufficient permission.'); } return $next($request);
You can customize access logic using roles or your own permission methods.
📄 License
This package is open-sourced software licensed under the MIT license.
© 2025 Avcodewizard
统计信息
- 总下载量: 14
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-14