viernes, 22 de enero de 2016


Copias de seguridad de archivos y bases de datos en Laravel 5


Desde que escribí el post con recursos para Laravel todavía no había encontrado una forma simple de hacer copias de seguridad tanto de archivos como de bases de datos en mis aplicaciones creadas con Laravel.
Varias son las opciones disponibles, una de ellas era la de ejecutar un Crontab puro y duro que clone el sistema de archivos y haga un volcado de las bases de datos, en mi caso, MySQL. Esta opción no es algo descabellado, pero si se quiere era la forma más engorrosa de hacerlo, tenia que definir que carpetas guardar, donde hacerlo, cada cuanto y luego el problema de donde guardar los volcados de la bases de datos.
Algo genial de Laravel es su comunidad, la misma siempre se encarga de solucionar los problemas comunes elaborando soluciones que se depuran por medio del trabajo en conjunto. Una de estas soluciones fue el paquete Laravel 5 Backup.
Copias de seguridad (Backups) en Laravel 5
Laravel 5 Backup es un paquete que se instala en segundos y se configura en apenas unos minutos, que permite la realización de copias de seguridad de cualquier aplicación basada en Laravel 5.

Copias de seguridad (Backups) en Laravel 5

Para que entiendan lo sencillo que es utilizar este paquete les dejo la linea que inicia y completa una nueva copia de seguridad
php artisan backup:run

Los requisitos

Para crear el volcado de la base de datos necesitamos tener instalado una dependencia, mysqldump (Esta instalado en el 99% de los alojamientos, si no lo tienen incorporado pueden hacerlo mediante la terminal y shh instalando mysql-client)

Instalación

Esto es lo más sencillo, se instala como cualquier paquete utilizando composer:
composer require spatie/laravel-backup
Luego agregamos una linea a nuestro archivo config/app.php
'providers' => [
    ...
    'Spatie\Backup\BackupServiceProvider',
    ...
];
Continuamos creando el archivo de configuración de este magnífico paquete:
php artisan vendor:publish —provider="Spatie\Backup\BackupServiceProvider"
Si todo salió bien vamos a encontrar el archivo de configuración en app/config/laravel-backup.php.
En este archivo vamos a configurar todos los aspectos importantes de este paquete:
return [

    'source' => [

        'files' => [

            /*
             * The list of directories that should be part of the backup. You can
             * specify individual files as well.
             */
            'include' => [
                base_path(),
            ],

            /*
             * These directories will be excluded from the backup.
             * You can specify individual files as well.
             */
            'exclude' => [
                storage_path(),
                base_path('vendor'),
            ],
        ],

        /*
         * Should the database be part of the back up.
         */
        'backup-db' => true,
    ],

    'destination' => [

        /*
         * The filesystem(s) you on which the backups will be stored. Choose one or more
         * of the filesystems you configured in app/config/filesystems.php
         */
        'filesystem' => ['local'],

        /*
         * The path where the backups will be saved. This path
         * is relative to the root you configured on your chosen
         * filesystem(s).
         *
         * If you're using the local filesystem a .gitignore file will
         * be automatically placed in this directory so you don't
         * accidentally end up committing these backups.
         */
        'path' => 'backups',

        /*
         * By default the backups will be stored as a zipfile with a
         * timestamp as the filename. With these options You can
         * specify a prefix and a suffix for the filename.
         */
        'prefix' => '',
        'suffix' => '',
    ],

    'clean' => [
        /*
         * The clean command will remove all backups on all configured filesystems
         * that are older then this amount of days.
         */
        'maxAgeInDays' => 90,
    ],

    'mysql' => [
        /*
         * The path to the mysqldump binary. You can leave this empty
         * if the binary is installed in the default location.
         */
        'dump_command_path' => '',

        /*
         * If your server supports it you can turn on extended insert.
         * This will result in a smaller dump file and speeds up the backup process.
         * 
         * See: https://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_extended-insert
         */
        'useExtendedInsert' => false,

        /*
         * If the dump of the db takes more seconds that the specified value,
         * it will abort the backup.
         */
        'timeoutInSeconds' => 60,
    ],
];

Modo de empleo

Ahora viene lo mejor, como utilizar este proyecto.
Iniciar una nueva copia:
php artisan backup:run
Iniciar una copia de solo las bases de datos:
php artisan backup:run —only-db
Iniciar una copia de solo los archivos
php artisan backup:run –only-files
Iniciar una copia de seguridad seleccionando el prefijo /sufijo del nombre de archivo resultante:
php artisan backup:run --prefix="backup-" —suffix=“-manual".
Limpiar las copias de seguridad más antiguas:
php artisan backup:clean
Eso es todo. No es un paquete genial?
Ahora sí que no hay excusas para tener copias de seguridad actualizadas en nuestras aplicaciones basadas en Laravel 5.

 fue publicado originalmente en: Kabytes

No hay comentarios:

Publicar un comentario