Home

Awesome

KachkaevDropboxBackupBundle

This bundle allows you backing up your mysql database to dropbox using symfony console command.

Uses modified version of DropboxUploader by hakre.

IMPORTANT

This repository is abandoned and has not been updated since 2013. Please enjoy these alternatives with a far greater functionality:

Installation

Composer

Add the following dependency to your project’s composer.json file:

    "require": {
        // ...
        "kachkaev/dropbox-backup-bundle": "dev-master"
        // ...
    }

Now tell composer to download the bundle by running the command:

$ php composer.phar update kachkaev/dropbox-backup-bundle

Composer will install the bundle to vendor/kachkaev directory.

Adding bundle to your application kernel

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Kachkaev\DropboxBackupBundle\KachkaevDropboxBackupBundle(),
        // ...
    );
}

Configuration

Here is the default configuration for the bundle:

kachkaev_dropbox_backup:  
    database:             

        # Only pdo_mysql is supported at the moment
        driver:               pdo_mysql 
        host:                 localhost 
        port:                 ~ 
        dbname:               ~ # Required
        user:                 ~ # Required
        password:             ~ # Required

        # Directory relative to Dropbox root
        output_directory:     

        # Output filename consists of prefix and timestamp
        output_fileprefix:    

        # Set to true to compress .sql to .tgz
        output_compression:   false 

    # Dropbox account credentials (use parameters in config.yml and store real values in prameters.yml)
    dropbox:              
        user:                 ~ # Required
        password:             ~ # Required

It is recommended to keep real values for logins and passwords in your parameters.yml file, e.g.:

# app/config/config.yml
kachkaev_dropbox_backup:
    database:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        
        output_directory: db-backup/
        output_fileprefix: db_
        output_compression: true
    dropbox:
        user: %dropbox_user%
        password: %dropbox_password%
# app/config/parameters.yml
	# ...
    database_driver: pdo_mysql
    database_host: localhost
    database_port: null
    database_name: myDatabase
    database_user: myLogin
    database_password: myDatabasePassword
    # ...
    dropbox_user: email@example.com
    dropbox_password: myDropboxPassword
	# ...

Usage

The bundle adds one command to symfony console: app/console dropbox_backup:database which you execute periodically as a cron job. For example the following cron command dumps your database every 3 hours on a machine with FreeBSD:

# /var/cron/tabs/root
0       */03    *       *       *       cd /path/to/symfony_project/root_dir && su -m symfony_user -c 'app/console dropbox_backup:database --env=prod'

At the moment the bundle only works with a single mysql database, but more database types can be added if there is a demand. In addition, the bundle can be extended to backup content. not only the database.