DEV Community

Peter Thaleikis πŸͺ
Peter Thaleikis πŸͺ

Posted on β€’ Edited on β€’ Originally published at bringyourownideas.com

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:

  • An account with Backblaze or a credit card to register an account.
  • A Laravel project with access to the code base as well as the environment configuration

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

Steps

  • First step is to install the dependencies:
composer require spatie/laravel-backup bringyourownideas/laravel-backblaze
Enter fullscreen mode Exit fullscreen mode

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

\bringyourownideas\Backblaze\BackblazeServiceProvider::class,
Enter fullscreen mode Exit fullscreen mode
  • Publish the spatie default backup configuration:
    php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" --tag=config
Enter fullscreen mode Exit fullscreen mode

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

  • Head over to Backblaze, log in and create a private bucket:

    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.

  • Get the Backblaze API keys:

    backblaze get keys
    and click the "Create New Master Application Key" button:

    backblaze get keys

  • Add the bucket name as well as account id and application key to your .env file:

# B2 Bucket configuration for backups

B2_BUCKET='my_backups'
B2_ACCOUNTID='abcdefghijk'
B2_APPLICATIONKEY='1234abcd1234abcd1234abcd1234abcd'
Enter fullscreen mode Exit fullscreen mode
  • Add the filesystem to the "config/filesystems.php":
'b2' => [
    'driver'         => 'b2',
    'bucketName'     => env('B2_BUCKET'),
    'accountId'      => env('B2_ACCOUNTID'),
    'applicationKey' => env('B2_APPLICATIONKEY'),
],
Enter fullscreen mode Exit fullscreen mode

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

'backup' -> 'destination' -> 'disks' and
'backup' => first entry of 'monitor_backups' => 'disks'
Enter fullscreen mode Exit fullscreen mode

to your new filesystem 'b2'.

  • Define your schedule in the "app/Console/Kernel.php" file:
/**
 * Define the application's command schedule.
 *
 * @param \Illuminate\Console\Scheduling\Schedule $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
    $schedule->command('backup:clean')->daily()->at('02:00');
    $schedule->command('backup:run')->daily()->at('02:30');
}
Enter fullscreen mode Exit fullscreen mode
If you are running a number of applications it is recommended to offset the times to avoid high load on the server.
Enter fullscreen mode Exit fullscreen mode




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.

AWS Q Developer image

Your AI Code Assistant

Generate and update README files, create data-flow diagrams, and keep your project fully documented. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Heroku

Amplify your impact where it matters most β€” building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

πŸ‘‹ Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay