Laravel 文件備份和數據庫備份工具(spatie/laravel-backup)

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

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配置文件。

更多操做請查閱官方文檔:https://docs.spatie.be/larave...

相關文章
相關標籤/搜索