Laravel备份-laravel backup(文件备份和数据库备份)
在我们的开发中,经常需要做到的事就是备份,一般我们做的备份无外乎是两种情况:程序备份 数据备份,随着版本控制工具的兴起,程序备份已经很少了,代码也很少会出现丢失的情况,大部分的应用场景来自于数据备份,而laravel backup就解决了这两种场景.
laravel backup是什么?
根据Spatie官网的描述是这样:A modern backup solution for Laravel apps(Laravel应用的现代备份解决方案)。
一旦安装,我们的程序备份和数据备份将变得非常容易,只需运行php artisan backup:run即可完成我们的备份操作,再也不用去重复造轮子了.开源 = 美好
获取地址:https://github.com/spatie/laravel-backup
最新包的要求是:需要PHP 7和Laravel 5.7或更高版本。
而我们目前应用的版本是laravel5.6,我们仍然可以安装它的历史进行使用,在composer查找一通,发现他支持laravel5.6最新包是spatie/laravel-backup": "5.12.0
那我们就开始引入这个包:
1.Composer安装
composer require "spatie/laravel-backup:5.12.0"
2.注册服务提供者(config/app.php):
'providers' => [
// ...
Spatie\Backup\BackupServiceProvider::class,
];
3.发布配置文件config/backup.php
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
4.如果数据库备份需要很长的时间,会撞到默认超时60秒,我们此时需要更改一下超时时间.
更改文件在config/database.php
'dump' => [
'use_single_transaction',
'timeout' => 60 * 5, // 5 minute timeout
],
5.开始备份 备份应用程序和数据库
php artisan backup:run
如果laravel邮件没有配置好,可能会触发一个错误.
Copying zip failed because: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required
".
Backup failed because Connection to smtp.mailtrap.io:2525 Timed Out.
因为备份完成时会默认发送邮件通知,如果你并不想要这个邮件通知,只需要将config/backup.php,通知的邮箱设置为Null,或者运行的带上--disable-notifications参数.
//邮件通知
'mail' => [
'to' => null,
],
备份完成后会存放在项目的Storage目录下,具体存放位置,请查看config/backup.php.
备份完成的会生成一个zip文件,里面包含程序备份和数据库备份文件(.sql)
如果你只需要备份的文件,想跳过数据库,运行:
php artisan backup:run --only-files
如果你只需要备份数据库 无需备份文件 运行:
php artisan backup:run --only-db
6.手动设置备份目标
默认是储存在local下面,可以通过config/filesystems.php来配置我们其他的文件系统或者备份路径.
,'destination' => [
/*
* The disk names on which the backups will be stored.
*/
'disks' => [
'local'
],
],
7.清理备份
我们可以配置cleanup 来自定义我们的清理设置.
'cleanup' => [
/*
* The strategy that will be used to cleanup old backups. The default strategy
* will keep all backups for a certain amount of days. After that period only
* a daily backup will be kept. After that period only weekly backups will
* be kept and so on.
*
* No matter how you configure it the default strategy will never
* delete the newest backup.
*/
'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,
]
清理备份运行:
php artisan backup:clean
以上就是laravel backup的基础用法,我们可以结合laravel artisan命令来实现更多的应用场景.
更多操作,请查阅官方文档地址:https://docs.spatie.be/laravel-backup/v5/introduction.
这个人暂时没有 freestyle