composer require spatie/laravel-backup
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
結果
Copied File [/vendor/spatie/laravel-backup/config/backup.php] To [/config/backup.php]
Copied Directory [/vendor/spatie/laravel-backup/resources/lang] To [/resources/lang/vendor/backup]
config/backup.php を変更します
'mail' => [
'to' => 'your@example.com',
↓
'mail' => [
'to' => array_map('trim', explode(',', env('BACKUP_MAIL_TO'))),
( .env から読み込むようにします。)
.env にメール送信先を追加
# DB Backup
BACKUP_MAIL_TO=yourname@your.dcomain.com
バックアップの実行 (データベースのみ)
php artisan backup:run --only-db
バックアップの実行 (データベースのみ, 通知機能なし)
php artisan backup:run --only-db --disable-notifications
古いバックアップファイルの削除
php artisan backup:clean
設定ファイルにどの期間まで保持するかを設定できるのでそこを好きな設定に書き換えて変更しておきます。
バックアップ先は
storage/app/<アプリ名>/2020-12-31-10-15-00.zip
のようにローカルディスクの中のアプリ名の中に日付のファイル名で保存されます。 変更する場合は設定ファイルを変更します。
app/Console/Kernel.php に次のように記述します
通知が不要な場合は --disable-notifications を後ろにつけます。
// DBの定期バックアップ
$schedule->command('backup:clean')->daily();
$schedule->command('backup:run --only-db')->daily();
->daily() をつけることで、デイリーで実行しています。 外すと 1分ごとにバックアップが実行されます。(Laravelの設定によりますが。)
php artisan backup:list
+---------+-------+-----------+---------+--------------+---------------+--------------+
| Name | Disk | Reachable | Healthy | # of backups | Newest backup | Used storage |
+---------+-------+-----------+---------+--------------+---------------+--------------+
| my-app | local | ✅ | ✅ | 8 | 0.00 (2分前) | 1021.23 KB |
+---------+-------+-----------+---------+--------------+---------------+--------------+
というふうに表示されます。