I have configured Spatie/Laravel backup in my application, and i have croned job for this on which it takes backup everyday automatically. But can I save just recent 5 or 10 backups of system? If new backup created then the oldest one should be deleted! Here is my clean-up strategy of backup configuration file:
'cleanup' => [
/*
* The strategy that will be used to cleanup old backups. The default strategy
* will keep all backups for a certain amount of days. After that period only
* a daily backup will be kept. After that period only weekly backups will
* be kept and so on.
*
* No matter how you configure it the default strategy will never
* delete the newest backup.
*/
'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,
'default_strategy' => [
/*
* The number of days for which backups must be kept.
*/
'keep_all_backups_for_days' => 7,
/*
* The number of days for which daily backups must be kept.
*/
'keep_daily_backups_for_days' => 16,
/*
* The number of weeks for which one weekly backup must be kept.
*/
'keep_weekly_backups_for_weeks' => 8,
/*
* The number of months for which one monthly backup must be kept.
*/
'keep_monthly_backups_for_months' => 4,
/*
* The number of years for which one yearly backup must be kept.
*/
'keep_yearly_backups_for_years' => 2,
/*
* After cleaning up the backups remove the oldest backup until
* this amount of megabytes has been reached.
*/
'delete_oldest_backups_when_using_more_megabytes_than' => 5000,
],
],
This is the function which create backup!
public function create()
{
try {
// start the backup process
\Illuminate\Support\Facades\Artisan::call('backup:run');
$output = \Illuminate\Support\Facades\Artisan::output();
// log the results
Log::info("Backpack\BackupManager -- new backup started from admin interface \r\n" . $output);
// return the results as a response to the ajax call
return redirect('/backups')->with('message', 'Backup Created Successfully!')->with('alertType', 'alert-success');
} catch (Exception $e) {
return redirect('/backups')->with('message', 'Backup Failed, Try again')->with('alertType', 'alert-warning');
}
}
If you do one backup a day, and want to just keep the latest 10, this would be your strategy:
If you do multiple backups every day, but just want to keep one backup per day (of the last 10 days) your strategy would be this: