博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 文件备份和数据库备份工具(spatie/laravel-backup)
阅读量:6621 次
发布时间:2019-06-25

本文共 3666 字,大约阅读时间需要 12 分钟。

spatie/laravel-backup这个应用程序包创建laravel备份。备份是一个zip文件包含所有的文件目录中指定和转储你的数据库。可以将备份存储在任何的文件系统你已经配置laravel 5。

感觉担心备份?别!你可以同时向多个文件系统应用程序的备份。

一旦安装,使您的文件和数据库备份是很容易的。只要运行该命令:php artisan backup:run

获取地址

注意事项

这种备份包需要PHP 7或更高ZIP模块和Laravel 5.5或更高。这不是兼容Windows服务器。

如果您使用的是旧版本的Laravel v3和v4 Laravel备份支持Laravel 5.1.20。

这个包需要空闲磁盘空间,它可以创建备份。确保你至少尽可能多的自由空间,你想备份文件的总大小。

确保 mysqldump安装在您的系统上,如果你想备份MySQL数据库。

确保 pg_dump安装在您的系统上,如果你想备份PostgreSQL数据库。

确保 mongodump安装在您的系统上,如果你想备份Mongo数据库。

使用composer安装spatie/laravel-backup

composer require "spatie/laravel-backup:^3.0.0"

注册服务提供者(config/app.php):

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

发布配置文件config/laravel-backup.php

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

如果你的数据库需要很长的时间,你会撞到默认超时60秒。你可以设置一个更高(或低)提供了一个限制dump_command_timeout配置密钥设置多长的命令可以运行在秒。

以MySQL为例(config/databases.php):

'connections' => ['mysql' => [    'dump_command_path' => '/path/to/the/binary', // only the path, so without 'mysqldump' or 'pg_dump'    'dump_command_timeout' => 60 * 5, // 5 minute timeout    'dump_using_single_transaction' => true, // perform dump using a single transaction    'driver'    => 'mysql',    ...],

PostgreSQL数据库的你也可以设置一个配置关键命名dump_use_inserts使用inserts而不是copy在数据库转储文件。

spatie/laravel-backup - MySQL数据备份

备份应用程序包括数据库:

php artisan backup:run

1508657018424355.png

1508657101798359.png

备份的数据库运行:

php artisan backup:run --only-db

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

php artisan backup:run --only-files

提示: --only-db --only-files。当监控备份包不会区分完整备份和备份只有文件或数据库。

确定备份的目的地

备份可以复制到一个或多个文件系统。这是配置的一部分,您可以指定这些目标文件系统。

'destination' => [  /*  * The disk names on which the backups will be stored.   */  'disks' => [      'local'  ],],

备份的目的地默认值 config('laravel-backup.destination.filesytems)是一个数组只有一个关键: local。如果您只使用本地磁盘备份磁盘崩溃你会只留下眼泪。

我们强烈推荐配置一些额外的磁盘 app/config/filesystems.php并添加自己的名字作为一个目标文件系统的备份。这些磁盘应该使用外部服务器或服务(如S3)。

spatie/laravel-backup - 清除旧的MySQL数据备份

随着时间的推移,备份量和存储需要保持增长。有时你会想清理旧的备份。

清理备份数据运行:

默认最后一次的备份数据是不会被删除的

php artisan backup:clean

确定要删除的备份

这是配置的一部分,将决定哪些备份应该删除。

//config/laravel-backup.php'cleanup' => [/* * The strategy that will be used to cleanup old backups. * The youngest backup wil never be deleted. */'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,"defaultStrategy" =    /*    * 所有每日备份必须保留的天数。    */    "keepAllBackupsForDays" = > 7    /*    * 必须保留每日备份的天数。    */    "keepDailyBackupsForDays" = > 16    /*    * 必须保留每周一次的备份的时间。    */    "keepWeeklyBackupsForWeeks" = > 8    /*    * 每月必须保存一个月的备份量。    */    "keepMonthlyBackupsForMonths" = > 4    /*    * 每年必须保持一年的备份量    */    "keepYearlyBackupsForYears" = > 2    /*    * 清理完备份后删除最旧的备份, 直到    * 达到了这一数量的兆字节。    */    "deleteOldestBackupsWhenUsingMoreMegabytesThan" = > 5000    ]],

此包提供了一种有意义的方法来确定应删除哪些旧备份。我们称之为“缺省策略”。这是它的工作原理:

规则# 1: 不会删除最近一次的备份

规则# 2:它将使所有备份的日子中指定 keepAllBackupsForDays

规则# 3:它只会保持每日备份的日子中指定 keepDailyBackupsForDays以上的所有备份那些规则#2负责

规则# 4:它只会保持每周备份中指定的几个月 keepMonthlyBackupsForMonths以上的所有备份那些规则#3负责

规则# 5:它只会保持每年备份指定的年 keepYearlyBackupsForYears以上的所有备份那些规则#4负责

规则# 6:它将开始删除旧的备份,直到所使用的存储空间低于指定的数字indeleteOldestBackupsWhenUsingMoreMegabytesThan。

当然缺省配置中使用的数字可以调整自己的喜欢。

创建您自己的策略

如果你不满意 DefaultStrategy,您可以创建自己的自定义策略。可以通过扩展抽象类 SpatieBackupTasksCleanupCleanupStrategy。你只需要实现这个方法:

use Spatie\Backup\BackupDestination\BackupCollection;public function deleteOldBackups(BackupCollection $backupCollection)

BackupCollection类是扩展的 IlluminateSupportCollection,包含 SpatieBackupBackupDestinationBackup对象按时间排序。最后一次备份是第一个集合中。

使用集合,您可以手动删除最老的备份:

// Retrieve an instance of `Spatie\Backup\BackupDestination\Backup`$backup = $backups->oldestBackup();// Bye bye backup$backup->delete()

别忘了您的自定义策略指定完整的类名 cleanup.strategy的关键 laravel-backup配置文件。

更多操作请查阅官方文档:

转载地址:http://xljpo.baihongyu.com/

你可能感兴趣的文章
linux系统防火墙关闭22端口,Linux系统防火墙关闭及端口开放
查看>>
linux挂载nfts分区,linux挂载NTFS分区
查看>>
linux popen获取ip地址,使用popen函数读取命令输出失败
查看>>
跟马哥快速学linux,学习Linux,如快速入门?
查看>>
python 编辑html文件内容,使用Python解析和编辑HTML文件
查看>>
切换 ip 批处理
查看>>
CommandArgument 绑定多个参数
查看>>
dropdownlist可以多选。类似的例子。。。
查看>>
Objective-C 内存管理
查看>>
DEV GridControl绑定的数据,ID相同的行显示相同的颜色(当ID的值不确定时)
查看>>
Linux下rz,sz与ssh的配合使用
查看>>
pku 1054 The Troublesome Frog 暴力+剪枝
查看>>
iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
查看>>
利用Python攻破12306的最后一道防线
查看>>
Android studio 百度地图开发(3)地图导航
查看>>
串行,并行,并发
查看>>
centos svn 的搭建
查看>>
HTML常见元素及其属性总结
查看>>
第1章关键角色及其职责——明白职责
查看>>
IOS CoreData 多表查询(下)
查看>>