Ce package fournit un gestionnaire de sauvegarde de base de données indépendant du framework pour le vidage et la restauration de bases de données à partir de S3, Dropbox, FTP, SFTP et Rackspace Cloud.
utiliser la version 2+ pour >=PHP 7.3
utiliser la version 1 pour <PHP 7.2
Regardez une visite vidéo montrant le pilote Laravel en action pour vous donner une idée de ce qui est possible.
prend en charge MySQL
et PostgreSQL
compresser avec Gzip
indépendant du framework
configuration très simple
Pilote Laravel
Pilote Symfony
Gestionnaire de sauvegarde de base de données
Table des matières
Rapide et sale
Exigences
Installation
Usage
Directives de contribution
Mainteneurs
Ruptures de compatibilité ascendante
Licence
Configurez vos bases de données.
// config/database.php'development' => ['type' => 'mysql','host' => 'localhost','port' => '3306','user' => 'root',' pass' => 'password','database' => 'test',// Si singleTransaction est défini sur true, l'indicateur --single-transcation sera défini.// Ceci est utile sur les bases de données transactionnelles comme InnoDB.// http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction'singleTransaction' => false,// Ne pas vider les tables données// Définir uniquement les noms de tables , sans nom de base de données// Exemple : ['table1', 'table2']// http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_ignore-table'ignoreTables' => [],// utiliser SSL pour vous connecter à votre base de données - support SSL actif (mysql uniquement ):'ssl'=>false,// ajoute des options supplémentaires à la commande dump (comme '--max-allowed-packet')'extraParams'=>null, ], 'production' => ['type' => 'postgresql','host' => 'localhost','port' => '5432','user' => 'postgres','pass' => 'mot de passe' ,'base de données' => 'test', ],
Configurez vos systèmes de fichiers.
// config/storage.php'local' => ['type' => 'Local','root' => '/path/to/working/directory', ],'s3' => ['type' => 'AwsS3','key' => '','secret' => '','region' => 'us-east-1','version' = > 'latest','bucket' => '','root' => '','use_path_style_endpoint' => false, ],'b2' => ['type' => 'B2','key' => '','accountId' => '','bucket' => '', ],'gcs' => ['type' => 'Gcs','key' => '','secret' => '','version' => 'dernière','bucket' => '', 'racine' => '', ],'rackspace' => ['type' => 'Rackspace','username' => '','key' => '','container' => '','zone' => '',' racine' => '', ],'dropbox' => ['type' => 'DropboxV2','token' => '','key' => '','secret' => '','app' => '',' racine' => '', ],'ftp' => ['type' => 'Ftp','host' => '','nom d'utilisateur' => '','mot de passe' => '','root' => '',' port' => 21,'passive' => true,'ssl' => true,'timeout' => 30, ],'sftp' => ['type' => 'Sftp','host' => '','nom d'utilisateur' => '','mot de passe' => '','root' => '',' port' => 21,'timeout' => 10,'privateKey' => '', ],'flysystem' => ['type' => 'Flysystem','name' => 's3_backup',//'prefix' => 'upload',],'doSpaces' => ['type' => 'AwsS3','key' => '','secret' => '','region' => '','bucket' => '','root' => '','endpoint' => '','use_path_style_endpoint' => faux, ],'webdav' => ['type' => 'Webdav','baseUri' => 'http://myserver.com','userName' => '','password' => '','prefix ' => '', ],
Sauvegarde/restauration à partir de n'importe quelle base de données configurée.
Sauvegardez la base de données de développement sur Amazon S3
. Le chemin de sauvegarde S3 sera finalement test/backup.sql.gz
, lorsque gzip
en aura terminé.
utilisez BackupManagerFilesystemsDestination;$manager = require 'bootstrap.php';$manager->makeBackup()->run('development', [new Destination('s3', 'test/backup.sql')], 'gzip') ;
Sauvegarde/restauration à partir de n'importe quel système de fichiers configuré.
Restaurez le fichier de base de données test/backup.sql.gz
d' Amazon S3
vers la base de données development
.
$manager = require 'bootstrap.php';$manager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');
Ce package ne vous permet pas de sauvegarder à partir d'un type de base de données et de restaurer vers un autre. Un dump MySQL n'est pas compatible avec PostgreSQL.
PHP5.5
La prise en charge de MySQL nécessite les binaires de ligne de commande mysqldump
et mysql
La prise en charge de PostgreSQL nécessite les binaires de ligne de commande pg_dump
et psql
La prise en charge de Gzip nécessite les binaires de ligne de commande gzip
et gunzip
Compositeur
Exécutez ce qui suit pour l'inclure via Composer
le compositeur nécessite un gestionnaire de sauvegarde/un gestionnaire de sauvegarde
Ensuite, vous devrez sélectionner les packages appropriés pour les adaptateurs que vous souhaitez utiliser.
# pour prendre en charge s3composer, il faut league/flysystem-aws-s3-v3# pour prendre en charge b2composer, il faut mhetreramesh/flysystem-backblaze# pour prendre en charge google cscomposer, il faut league/flysystem-aws-s3-v2# pour installer le pilote dropbox v2 préféré requis spatie/ flysystem-dropbox# pour installer l'ancien drivercomposer Dropbox v2 nécessite srmklive/flysystem-dropbox-v2# pour prendre en charge rackspacecomposer nécessite league/flysystem-rackspace# pour prendre en charge sftpcomposer nécessite league/flysystem-sftp# pour prendre en charge webdav (pris en charge par owncloud et bien d'autres)composer nécessite league/flysystem-webdav
Une fois installé, le package doit être démarré (configuration initiale) avant de pouvoir être utilisé.
Nous avons fourni ici un exemple PHP natif.
Le bootstrapping requis peut être trouvé dans l’exemple ici.
Nous vous recommandons d'utiliser la configuration vagrant fournie avec ce package pour le développement et la contribution. Installez simplement VirtualBox, Vagrant et Ansible, puis exécutez vagrant up
dans le dossier racine. Une machine virtuelle spécialement conçue pour le développement du package sera construite et lancée pour vous.
Lorsque vous contribuez, veuillez tenir compte des directives suivantes :
Le style de code est PSR-2
Les interfaces ne doivent PAS être suffixées par Interface
, les Traits ne doivent PAS être suffixés par Trait
.
Toutes les méthodes et classes doivent contenir des docblocks.
Assurez-vous de soumettre des tests ayant une couverture minimale de 100 %. Compte tenu de la simplicité du projet, cela a du sens.
Lors de la planification d'une pull-request pour ajouter de nouvelles fonctionnalités, il peut être judicieux de soumettre une proposition pour garantir la compatibilité avec les objectifs du projet.
Ce package est géré par Shawn McCool et vous !
Supprimer le support de Symfony 2. Plus précisément les versions symfony/process < 3.x
Ce package est sous licence MIT. Devenez sauvage.