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