https://github.com/backup-manager/symfony
Driver to seamlessly integrate the Backup Manager into Symfony applications.
https://github.com/backup-manager/symfony
Last synced: about 1 year ago
JSON representation
Driver to seamlessly integrate the Backup Manager into Symfony applications.
- Host: GitHub
- URL: https://github.com/backup-manager/symfony
- Owner: backup-manager
- Created: 2015-09-07T10:16:54.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2022-01-24T06:38:35.000Z (over 4 years ago)
- Last Synced: 2025-03-29T02:05:51.951Z (about 1 year ago)
- Language: PHP
- Homepage:
- Size: 96.7 KB
- Stars: 120
- Watchers: 7
- Forks: 40
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
Awesome Lists containing this project
README
BackupManagerBundle
===================
[](https://packagist.org/packages/backup-manager/symfony)
[](https://packagist.org/packages/backup-manager/symfony)
[](https://travis-ci.org/backup-manager/symfony)
[](https://packagist.org/packages/backup-manager/symfony)
A simple database backup manager for Symfony with support for S3, Rackspace, Dropbox, FTP, SFTP.
This package pulls in the framework agnostic [Backup Manager](https://github.com/backup-manager/backup-manager) and provides seamless integration with **Symfony**.
Installation
============
Step 1: Download the Bundle
---------------------------
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:
```bash
$ composer require backup-manager/symfony
```
This command requires you to have Composer installed globally, as explained
in the [installation chapter](https://getcomposer.org/doc/00-intro.md)
of the Composer documentation.
Step 2 (with Flex): Enable the Bundle
-------------------------------------
You do not need to do anything more. The bundle is enabled automatically and
you have some nice default config in `config/packages/bm_backup_manager.yml`.
Step 2 (no Flex): Enable the Bundle
-----------------------------------
If you are not using Symfony Flex, you need to enable the bundle by adding it to
the list of registered bundles in the `app/AppKernel.php` file of your project.
```php
// config/bundles.php
return [
BM\BackupManagerBundle\BMBackupManagerBundle::class => ['all' => true],
// ...
];
```
Step 3: Configure your databases and filesystems
------------------------------------------------
```yaml
# config/packages/bm_backup_manager.yml
bm_backup_manager:
database:
development:
type: mysql
host: localhost
port: 3306
user: root
pass: password
database: test
ignoreTables: ['foo', 'bar']
# If DSN is specified, it will override other values
dsn: 'mysql://root:root_pass@127.0.0.1:3306/test_db'
production:
type: postgresql
host: localhost
port: 5432
user: postgres
pass: password
database: test
# You could also use a environment variable
dsn: '%env(resolve:DATABASE_URL)%'
storage:
local:
type: Local
root: /path/to/working/directory
s3:
type: AwsS3
key:
secret:
region: us-east-1
version: latest
bucket:
root:
b2:
type: B2
key:
accountId:
bucket:
rackspace:
type: Rackspace
username:
password:
container:
dropbox:
type: DropboxV2
token:
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:
```
Usage
=====
To backup 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.
```php
class Foo {
private $backupManager;
public function __construct(BackupManager $backupManager) {
$this->backupManager = $backupManager;
}
public function bar() {
$this->backupManager->makeBackup()->run('development', [new Destination('s3', 'test/backup.sql')], 'gzip');
}
}
```
Or with a command:
```bash
php bin/console backup-manager:backup development s3 -c gzip --filename test/backup.sql
```
To restore from any configured filesystem.
---------------------------------------------------
Restore the database file `test/backup.sql.gz` from `Amazon S3` to the `development` database.
```php
class Foo {
private $backupManager;
public function __construct(BackupManager $backupManager) {
$this->backupManager = $backupManager;
}
public function bar() {
$this->backupManager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');
}
}
```
Or with a command:
```bash
php bin/console backup-manager:restore development s3 test/backup.sql.gz -c 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 7.3
- 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