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)

image.png

如果你只需要备份的文件,想跳过数据库,运行:

php artisan backup:run --only-files

如果你只需要备份数据库 无需备份文件 运行:

php artisan backup:run --only-db

image.png

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

image.png

以上就是laravel backup的基础用法,我们可以结合laravel artisan命令来实现更多的应用场景.

更多操作,请查阅官方文档地址:https://docs.spatie.be/laravel-backup/v5/introduction.

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容