Database Backup Manager
- supports
MySQL
andPostgreSQL
- compress with
Gzip
- framework-agnostic
- dead simple configuration
- optional integrations for MVC framework Laravel
Table of Contents
- Stability Notice
- Quick and Dirty
- Requirements
- Installation
- Usage
- Integrations
- Contribution Guidelines
- Maintainers
- License
Stability Notice
This isn't a 1.0
release.
This initial release is VERY likely to have bugs and is also very like to change given feedback from users. Please feel free to submit feedback.
Quick and Dirty
Configure your databases.
// config/database.php
'development' => [
'type' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'user' => 'root',
'pass' => 'password',
'database' => 'test',
],
'production' => [
'type' => 'postgresql',
'host' => 'localhost',
'port' => '5432',
'user' => 'postgres',
'pass' => 'password',
'database' => 'test',
],
Configure your filesystems.
// config/storage.php
'local' => [
'type' => 'Local',
'root' => '/',
],
's3' => [
'type' => 'AwsS3',
'key' => '',
'secret' => '',
'region' => Aws\Common\Enum\Region::US_EAST_1,
'bucket' => '',
'root' => '',
],
'rackspace' => [
'type' => 'Rackspace',
'username' => '',
'password' => '',
'container' => '',
'root' => '',
],
'dropbox' => [
'type' => 'Dropbox',
'key' => '',
'secret' => '',
'app' => '',
'root' => '',
],
'ftp' => [
'type' => 'Ftp',
'host' => '',
'username' => '',
'password' => '',
'root' => '',
'port' => 21,
'passive' => true,
'ssl' => true,
'timeout' => 30,
],
'sftp' => [
'type' => 'Sftp',
'host' => '',
'username' => '',
'password' => '',
'root' => '',
'port' => 21,
'timeout' => 10,
'privateKey' => '',
],
Backup to / restore from any configured database.
Backup the development database to Amazon S3
. The S3 backup path will be test/backup.sql.gz
in the end, when gzip
is done with it.
$manager = require 'bootstrap.php';
$manager->makeBackup()->run('development', 's3', 'test/backup.sql', 'gzip');
Backup to / restore from any configured filesystem.
Restore the database file test/backup.sql.gz
from Amazon S3
to the development
database.
$manager = require 'bootstrap.php';
$manager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');
This package does not allow you to backup from one database type and restore to another. A MySQL dump is not compatible with Postgresql.
Requirements
- PHP 5.4
- MySQL support requires
mysqldump
andmysql
command-line binaries - PostgreSQL support requires
pg_dump
andpsql
command-line binaries - Gzip support requires
gzip
andgunzip
command-line binaries
Installation
Composer
- Add the package to "require" in composer.json
For now, dev-master
is fine since we're pre-1.0.
"require": {
"heybigname/backup-manager": "dev-master"
}
- Update your composer packages.
composer update
Usage
Once installed, the package must be bootstrapped (initial configuration) before it can be used. If you're using Laravel then skip directly to the Laravel integration section.
We've provided a native PHP example here.
The required bootstrapping can be found in the example here.
Integrations
The backup manager is easy to integrate into your favorite frameworks. We've included Laravel integration. We're definitely accepting pull-requests.
Laravel
To install into a Laravel project, first do the composer install then add the following class to your config/app.php service providers list.
'BigName\BackupManager\Integrations\Laravel\BackupManagerServiceProvider',
Then, publish and modify the configuration file to suit your needs.
php artisan config:publish heybigname/backup-manager --path=vendor/heybigname/backup-manager/config
IoC Resolution
Manager
can be automatically resolved through constructor injection thanks to Laravel's IoC container.
use BigName\BackupManager\Manager;
public function __construct(Manager $manager)
{
$this->manager = $manager;
}
It can also be resolved manually from the container.
$manager = App::make('BigName\BackupManager\Manager');
Artisan Commands
There are three commands available manager:backup
, manager:restore
and manager:list
.
All will prompt you with simple questions to successfully execute the command.
Contribution Guidelines
We recommend using the vagrant configuration supplied with this package for development and contribution. Simply install VirtualBox, Vagrant, and Ansible then run vagrant up
in the root folder. A virtualmachine specifically designed for development of the package will be built and launched for you.
When contributing please consider the following guidelines:
- please conform to the code style of the project, it's essentially PSR-2 with a few differences.
- The NOT operator when next to parenthesis should be surrounded by a single space.
if ( ! is_null(...)) {
. - Interfaces should NOT be suffixed with
Interface
, Traits should NOT be suffixed withTrait
.
- The NOT operator when next to parenthesis should be surrounded by a single space.
- All methods and classes must contain docblocks.
- Ensure that you submit tests that have minimal 100% coverage.
- When planning a pull-request to add new functionality, it may be wise to submit a proposal to ensure compatibility with the project's goals.
Maintainers
This package is maintained by Mitchell van Wijngaarden and Shawn McCool of Big Name
License
The MIT License (MIT)
Copyright (c) 2014 Big Name
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.