laravel 中使用laravel-backup备份数据库

laravel-backup备份代码和数据库

1.composer安装

$ composer require spatie/laravel-backup

2.设置providers

'providers' => [
// ....
Spatie\Backup\BackupServiceProvider::class,
]

3.发布配置文件

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

4.设置配置文件(config/backup.php)

配置文件中有几个地方我们需要讲解和设置一下

# 表示备份在storage/app/blog-backup文件夹下
'name' => 'blog-backup',

# 这些目录不备份,也就是vnedor和node_modules目录
 'exclude' => [
    base_path('vendor'),
    base_path('node_modules'),
 ],

# 执行任务成功时,发送邮件(前提是要配置邮件发送服务),当你邮箱配置出错的时候,可能会备份不成功
'mail' => [
    'to' => '3211028@qq.com',
],

5.测试

执行这段命令的时候,storage/app/blog-backup目录下回找到有一个对应备份时间的压缩包 db-dumps代表数据库备份,另一个文件夹代表代码备份

$ php artisan backup:run

6.设置定时任务

在Kernel.php中schedule方法增加如下代码 这里是每天1点清除备份(受到配置文件defaultStrategy数组制约), 2点备份

protected function schedule(Schedule $schedule)
{
    //.....
    // $schedule->command('inspire')
    //          ->hourly();
    $schedule->command('backup:clean')->dailyAt('01:00');
    $schedule->command('backup:run')->dailyAt('02:00');
}

7.新建cron.txt文件

# cd到项目根目录
# 将内容写入到cron.txt文件中
# 这里一定要将/path/to替换成自己的项目目录
$ echo '* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1' > cron.txt

8.启动定时

# 读取配置文件
$ crontab  cron.txt
# 启动定时
$ crontab -l