spatie/laravel-backup这个应用程序包建立laravel备份。备份是一个zip文件包含全部的文件目录中指定和转储你的数据库。能够将备份存储在任何的文件系统你已经配置laravel 5。php
感受担忧备份?别!你能够同时向多个文件系统应用程序的备份。mysql
一旦安装,使您的文件和数据库备份是很容易的。只要运行该命令:php artisan backup:runlaravel
获取地址:https://github.com/spatie/lar...git
注意事项:github
这种备份包须要PHP 7或更高ZIP模块和Laravel 5.5或更高。这不是兼容Windows服务器。sql
若是您使用的是旧版本的Laravel v3和v4 Laravel备份支持Laravel 5.1.20。数据库
这个包须要空闲磁盘空间,它能够建立备份。确保你至少尽量多的自由空间,你想备份文件的总大小。数组
确保 mysqldump安装在您的系统上,若是你想备份MySQL数据库。服务器
确保 pg_dump安装在您的系统上,若是你想备份PostgreSQL数据库。app
确保 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
备份的数据库运行:
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配置文件。
更多操做请查阅官方文档:https://docs.spatie.be/larave...