{{ __('Securely manage your system archives and cloud synchronization.') }}
of 0 used
| {{ __('Archive Name') }} | {{ __('Status') }} | {{ __('Timestamp') }} | {{ __('Actions') }} |
|---|---|---|---|
| {{ __('Scanning Archives...') }} | |||
Everything you need to know about creating, scheduling, restoring, and securing your system archives. Read this first — restoring overwrites your live data.
mysqldump / pg_dump at the moment you click Instant Backup or when the scheduler fires.'],
['icon'=>'bi-file-zip', 'color'=>'#8b5cf6', 'title'=>'2. Compress', 'desc'=>'The SQL dump is gzip-compressed into a single .sql.gz archive named with timestamp + driver tag.'],
['icon'=>'bi-hdd-network', 'color'=>'#22c55e', 'title'=>'3. Transfer', 'desc'=>'Archive is written to the configured driver. Local saves to storage/app/backups/. Google Drive uploads via OAuth refresh token.'],
['icon'=>'bi-clipboard-check','color'=>'#f59e0b', 'title'=>'4. Verify', 'desc'=>'File size and SHA-256 checksum are recorded. The Archive Inventory table reflects the new row immediately.'],
['icon'=>'bi-trash3', 'color'=>'#ef4444', 'title'=>'5. Prune', 'desc'=>'Archives older than the configured retention (days) are auto-deleted on the next scheduled run. Local + cloud are pruned independently.'],
];
@endphp
@foreach($steps as $s)
| DRIVER | WHERE | SETUP | BEST FOR | RISK IF SERVER DIES |
|---|---|---|---|---|
| Local Filesystem | storage/app/backups/ |
Zero config | Quick recovery, small datasets, dev environments | Total loss — backups on same disk |
| Google Drive | OAuth folder (default: LaravelBackups) |
Client ID + Secret + Refresh Token | Off-site redundancy, production, disaster recovery | Safe — off-server copy |
{{ url('/backup-restore/google-callback') }}cron calling php artisan schedule:run every minute).02:00). Pick low-traffic hours — backup briefly locks tables.7. Set to 0 to keep forever (not recommended).RECOMMENDED RESTORE SEQUENCE: [1] Click Instant Backup NOW — creates a return path [2] Enable Maintenance Mode (so users can't write data mid-restore) [3] Open Archive Inventory → identify the archive you want [4] Click the row action menu → Restore [5] Confirm the dialog (read it carefully — points of no return) [6] Wait for the success toast (do NOT navigate away) [7] Verify data integrity on a couple of critical tables [8] Disable Maintenance Mode # If something looks wrong after restore: # → Use the safety backup from step [1] to roll back
| SYMPTOM | LIKELY CAUSE | FIX |
|---|---|---|
| Backup button does nothing | storage/app/backups/ not writable |
chmod -R 775 storage/ |
| "Requirements not met" alert | mysqldump / pg_dump not in PATH |
Install DB client tools on the server |
| Scheduled backup never runs | Laravel scheduler cron not registered | Add * * * * * php artisan schedule:run to crontab |
| Google Drive upload fails | Refresh token expired or revoked | Re-authorize via the key button |
| Disk fills up rapidly | Retention too high or hourly schedule on large DB | Lower retention, switch to daily, prune old archives manually |
| Restore hangs / times out | Large archive, low PHP max_execution_time |
Run restore via CLI: php artisan backup:restore {file} |
manage backup and storage to senior admins. Restore is one click away from catastrophe.'],
['icon'=>'bi-bar-chart-line', 'title'=>'Monitor storage health', 'desc'=>'Watch the dark widget in the sidebar — when it turns red, prune or expand storage.'],
['icon'=>'bi-clipboard-pulse', 'title'=>'Document recovery plan', 'desc'=>'Write down (outside this system) the exact steps to restore + who has the Google account credentials.'],
];
@endphp
@foreach($tips as $tip)
view backup and storagemanage backup and storagestorage/app/backups/. They are excluded from your code repository by .gitignore. To migrate archives to a new server, copy this directory (and the Google Drive token from Global Settings → Backup).