Szükségünk van egy commandra, amely a mysqldump-ot futtatja.

app/Console/Commands/DbBackup.php

https://gist.github.com/vipisti/7edb13da88ffcff106ae48670197f800

Ezt a Laravel schedulerjéből futtatjuk az alábbi sor beszúrásával.

app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    // ...
    $schedule->command('db:backup')->daily()->at('03:30');
    // ...
}

Magát a schedulert óránként futtatjuk, mert annál gyakoribb ütemezésünk biztos nem lesz.

/etc/cron.d/laravel

30 * * * * myuser /usr/bin/php /srv/www/myproject/artisan schedule:run >> /dev/null 2>&1

Ezek után létrehozhatunk egy borgmatic konfigot a storage/app/ és a storage/logs/ mappákra, és ezzel megoldottuk a Laravel appunk teljes körű backupját.

location:
    source_directories:
        - /path/storage/app
        - /path/storage/logs
    repositories:
        - myuser@mydomain.hu:borg/myrepo
storage:
    encryption_passphrase: "random_passphrase"
retention:
    keep_daily: 7
    keep_weekly: 4
    keep_monthly: 6