Eseguire backup in Laravel con laravel-backup

Mattepuffo's logo
Eseguire backup in Laravel con laravel-backup

Eseguire backup in Laravel con laravel-backup

Come si intuisce dal nome laravel-backup è una libreria per Laravel che ci consente di effettuare i backup in maniera agevole.

Di default esegue il back sia dei files che del database, ma ovviamente possiamo anche farli separati.

Inoltre è anche possibile farli su spazi esterni tramite FTP o simili.

Prima di tutto installiamolo con composer:

composer require spatie/laravel-backup

Poi eseguiamo questo comando:

php artisan vendor:publish --provider="SpatieBackupBackupServiceProvider"

Tra le varie cose viene creato anche il file config/backup.php che contiene la configurazione del backup.

Questo il mio file:

return [
    'backup' => [
        'name' => '',
        'source' => [
            'files' => [
                'include' => [
                    base_path(),
                ],
                'exclude' => [
                    base_path('vendor'),
                    base_path('node_modules'),
                ],
                'follow_links' => false,
                'ignore_unreadable_directories' => false,
                'relative_path' => null,
            ],
            'databases' => [
                'mysql',
            ],
        ],
        'database_dump_compressor' => null,
        'database_dump_file_extension' => '',
        'destination' => [
            'filename_prefix' => '',
            'disks' => [
                'ftp_bck_db',
                'ftp_bck_files',
            ],
        ],
        'temporary_directory' => storage_path('app/backup-temp'),
        'password' => null,
        'encryption' => 'default',
    ],
    'monitor_backups' => [
        [
            'name' => env('APP_NAME', 'laravel-backup'),
            'disks' => ['local'],
            'health_checks' => [
                \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1,
                \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000,
            ],
        ],
    ],
    'cleanup' => [
        'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,
        'default_strategy' => [
            'keep_all_backups_for_days' => 7,
            'keep_daily_backups_for_days' => 16,
            'keep_weekly_backups_for_weeks' => 8,
            'keep_monthly_backups_for_months' => 4,
            'keep_yearly_backups_for_years' => 2,
            'delete_oldest_backups_when_using_more_megabytes_than' => 5000,
        ],
    ],
];

Come vedete disks contiene un array di "dischi" che sono configurati dentro config/filesystems.php.

Io ne ho messi due, entrambi FTP, perchè sostanzialmente devo fare i backup in cartelle separate.

Il comando sotto esegue il backup completo inviando i file zippati in tutti i dischi presenti:

php artisan backup:run

Questi invece sono i comandi che uso io:

php artisan backup:run --only-db --only-to-disk=ftp_bck_db
php artisan backup:run --only-files --only-to-disk=ftp_bck_files

Con il primo eseguo il back del database e lo mando su server FTP.

Col secondo eseguo solo il backup dei files mandandolo in un altro FTP.

Per tutte le altre opzioni vi consiglio un giro sulla documentazione.

Enjoy!


Condividi

Commentami!