2017 © Pedro Peláez
 

library backup-manager

Database backup manager for dumping to and restoring databases from S3, Dropbox, FTP, and SFTP.

image

heybigname/backup-manager

Database backup manager for dumping to and restoring databases from S3, Dropbox, FTP, and SFTP.

  • Thursday, March 5, 2015
  • by graham-campbell
  • Repository
  • 3 Watchers
  • 640 Stars
  • 24,305 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 54 Forks
  • 3 Open issues
  • 19 Versions
  • 0 % Grown

The README.md

IMPORTANT NOTICE

This repository has been completely removed and should NO LONGER be used. Find the new and improved version at Backup Manager., (*1)

Seriously, don't use this repo., (*2)

Database Backup Manager

Latest Stable Version License Build Status Coverage Status Total Downloads, (*3)

  • supports MySQL and PostgreSQL
  • compress with Gzip
  • framework-agnostic
  • dead simple configuration
  • optional integrations for MVC framework Laravel

This package is completely framework agnostic. Mitchell has put together a video tour of Laravel integration, to give you an idea what is possible with this package., (*4)

Table of Contents

Stability Notice

It's stable enough, you'll need to understand permissions., (*5)

This package is actively being developed and we would like to get feedback to improve it. Please feel free to submit feedback., (*6)

Quick and Dirty

Configure your databases., (*7)

// 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., (*8)

// config/storage.php
'local' => [
    'type' => 'Local',
    'root' => '/path/to/working/directory',
],
's3' => [
    'type' => 'AwsS3',
    'key'    => '',
    'secret' => '',
    'region' => Aws\Common\Enum\Region::US_EAST_1,
    'bucket' => '',
    'root'   => '',
],
'rackspace' => [
    'type' => 'Rackspace',
    'username' => '',
    'key' => '',
    'container' => '',
    'zone' => '',
    '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., (*9)

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., (*10)

$manager = require 'bootstrap.php';
$manager->makeBackup()->run('development', 's3', 'test/backup.sql', 'gzip');

Backup to / restore from any configured filesystem., (*11)

Restore the database file test/backup.sql.gz from Amazon S3 to the development database., (*12)

$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., (*13)

Requirements

  • PHP 5.4
  • MySQL support requires mysqldump and mysql command-line binaries
  • PostgreSQL support requires pg_dump and psql command-line binaries
  • Gzip support requires gzip and gunzip command-line binaries

Installation

Composer, (*14)

Run the following to include this via Composer, (*15)

composer require heybigname/backup-manager

Then, you'll need to select the appropriate packages for the adapters that you want to use., (*16)

# to support s3
composer require league/flysystem-aws-s3-v2

# to support dropbox
composer require league/flysystem-dropbox

# to support rackspace
composer require league/flysystem-rackspace

# to support sftp
composer require league/flysystem-sftp

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., (*17)

We've provided a native PHP example here., (*18)

The required bootstrapping can be found in the example here., (*19)

Integrations

The backup manager is easy to integrate into your favorite frameworks. We've included Laravel integration. We're definitely accepting pull-requests., (*20)

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., (*21)

'BigName\BackupManager\Integrations\Laravel\BackupManagerServiceProvider',

Then, publish and modify the configuration file to suit your needs., (*22)

php artisan config:publish heybigname/backup-manager --path=vendor/heybigname/backup-manager/config, (*23)

The Backup Manager will make use of Laravel's database configuration., (*24)

IoC Resolution, (*25)

Manager can be automatically resolved through constructor injection thanks to Laravel's IoC container., (*26)

use BigName\BackupManager\Manager;

public function __construct(Manager $manager) {
    $this->manager = $manager;
}

It can also be resolved manually from the container., (*27)

$manager = App::make('BigName\BackupManager\Manager');

Artisan Commands, (*28)

There are three commands available db:backup, db:restore and db:list., (*29)

All will prompt you with simple questions to successfully execute the command., (*30)

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., (*31)

When contributing please consider the following guidelines:, (*32)

  • please conform to the code style of the project, it's essentially PSR-2 with a few differences.
    1. The NOT operator when next to parenthesis should be surrounded by a single space. if ( ! is_null(...)) {.
    2. Interfaces should NOT be suffixed with Interface, Traits should NOT be suffixed with Trait.
  • 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, (*33)

License

This package is licensed under the MIT license., (*34)

The Versions