Backing up your Laravel project to Backblaze B2

Ensuring you are regularly backing your project database and assets up can be a dreadful task. At the same time it is a perfect task to automate. The following five minute tutorial provides you with all steps needed to back up your project to Backblaze's B2 storage. B2 is a service similar to the Amazon product AWS S3. The main difference is the price: B2 offers unlimited storage for a few dollars a month.

Requirements #

As usual you will need a few things before getting started:

Once you have these can get started with the seven steps below.

Steps #

composer require spatie/laravel-backup bringyourownideas/laravel-backblaze

and add the BackblazeServiceProvider to your "config/app.php" file:

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" --tag=config

It pays to check the config/backup.php file for more detailed configuration of the backup.

Selection 024

Please note: the bucket name needs to globally unique in the B2 systems. You might need to get a little creative to find one.

backblaze get keys

and click the "Create New Master Application Key" button:

backblaze get keys

# B2 Bucket configuration for backups
'b2' => [
'driver' => 'b2',
'bucketName' => env('B2_BUCKET'),
'accountId' => env('B2_ACCOUNTID'),
'applicationKey' => env('B2_APPLICATIONKEY'),

Once the filesystem is known to Laravel, go back to your config/backup.php-file and update the keys

to your new filesystem 'b2'.

* Define the application's command schedule.
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void

protected function schedule(Schedule $schedule)

If you are running a number of applications it is recommended to offset the times to avoid high load on the server.

That's it. #

Congratulations, now your project should be configured to be backups every night at 2:30 am.

You can test the backups by running this command:

php artisan backup:run

After the backup you should be able list all backups:

php artisan backup:list

If you are testing this locally you will need to configure your local environment similar to the production environment of course.

Acknowledgements #

Special thanks to Paul Olthof, who has written the first version of the adapter. We have fixed some issues to ensure it's working correctly.


Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated 💖! For feedback, please ping me on Twitter.