heybigname / backup-manager
数据库备份管理器,支持将数据库导出到和从 S3、Dropbox、FTP 和 SFTP 恢复数据库。
Requires
- php: >=5.4.0
- aws/aws-sdk-php: ~2.4
- league/flysystem: >=0.3.1
- symfony/process: 2.*
Requires (Dev)
- dropbox/dropbox-sdk: 1.1.*
- illuminate/console: 4.x
- illuminate/container: 4.x
- illuminate/support: 4.x
- mockery/mockery: dev-master
- phpspec/phpspec: ~2.0
- phpunit/phpunit: 3.7.*
- rackspace/php-opencloud: 1.9.*
- satooshi/php-coveralls: ~0.6
Suggests
- aws/aws-sdk-php: Enables AWS S3 storage
- dropbox/dropbox-sdk: Enables Dropbox storage
- phpseclib/phpseclib: Enables SFTP storage
- rackspace/php-opencloud: Enables Rackspace Cloud storage
- sabre/dav: Enables WebDav storage
README
此仓库已被完全移除,应不再使用。请在新版本Backup Manager中查找。
严肃地说,不要使用此仓库。
数据库备份管理器
- 支持
MySQL
和PostgreSQL
- 使用
Gzip
压缩 - 框架无关
- 简单配置
- 可选的 MVC 框架集成 Laravel
此包完全与框架无关。Mitchell 制作了一个 视频介绍,展示了 Laravel 集成,让您了解此包可以做什么。
目录
稳定性说明
足够稳定,但您需要了解权限。
此包正在积极开发中,我们希望收到反馈以改进它。 请随时提交反馈。
快速配置
配置您的数据库。
// 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', ],
配置您的文件系统。
// 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' => '', ],
备份到任何配置的数据库或从任何配置的数据库恢复。
将开发数据库备份到 Amazon S3
。最终,当使用 gzip
处理后,S3 备份路径将是 test/backup.sql.gz
。
$manager = require 'bootstrap.php'; $manager->makeBackup()->run('development', 's3', 'test/backup.sql', 'gzip');
备份到任何配置的文件系统或从任何配置的文件系统恢复。
从 Amazon S3
恢复数据库文件 test/backup.sql.gz
到开发数据库。
$manager = require 'bootstrap.php'; $manager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');
此包不允许您从一种数据库类型备份并恢复到另一种类型。MySQL 数据库转储与 PostgreSQL 不兼容。
要求
- PHP 5.4
- MySQL 支持 requires
mysqldump
和mysql
命令行程序 - PostgreSQL 支持 requires
pg_dump
和psql
命令行程序 - Gzip 支持 requires
gzip
和gunzip
命令行程序
安装
Composer
运行以下命令通过 Composer 包含
composer require heybigname/backup-manager
然后,您需要选择您想使用的适配器的适当包。
# 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
使用
安装后,包必须进行引导(初始配置)才能使用。如果您使用 Laravel,则直接跳转到 Laravel 集成部分。
我们在这里提供了一个原生的PHP示例。点击这里查看。
所需的引导步骤可以在以下示例中找到:点击这里。
集成
备份管理器很容易集成到您喜欢的框架中。我们包含了Laravel集成。我们绝对接受pull-requests。
Laravel
要将备份管理器安装到Laravel项目中,首先执行composer install,然后向您的config/app.php服务提供者列表中添加以下类。
'BigName\BackupManager\Integrations\Laravel\BackupManagerServiceProvider',
然后,发布并修改配置文件以适应您的需求。
php artisan config:publish heybigname/backup-manager --path=vendor/heybigname/backup-manager/config
备份管理器将使用Laravel的数据库配置。
IoC解析
由于Laravel的IoC容器,可以使用构造函数注入自动解析Manager
。
use BigName\BackupManager\Manager; public function __construct(Manager $manager) { $this->manager = $manager; }
也可以从容器中手动解析。
$manager = App::make('BigName\BackupManager\Manager');
Artisan命令
有三个命令可用:db:backup
、db:restore
和db:list
。
所有这些都会提示您进行简单的提问以成功执行命令。
贡献指南
我们建议使用此包附带的开发和贡献的vagrant配置。只需安装VirtualBox、Vagrant和Ansible,然后在根目录中运行vagrant up
即可。将为您构建并启动一个专门为该包的开发而设计的虚拟机。
在贡献时请考虑以下指南
- 请遵守项目的代码风格,它基本上是PSR-2,但有一些差异。
- 当NOT运算符紧邻括号时,应在其周围使用单个空格。例如:
if ( ! is_null(...)) {
。 - 接口不应以
Interface
结尾,特质不应以Trait
结尾。
- 当NOT运算符紧邻括号时,应在其周围使用单个空格。例如:
- 所有方法和类都必须包含docblocks。
- 确保您提交的测试至少有100%的覆盖率。
- 当计划提交一个添加新功能的pull-request时,可能明智的做法是提交一个提案以确保与项目的目标兼容。
维护者
此包由Mitchell van Wijngaarden和Shawn McCool维护,他们是Big Name的成员。
许可证
此包根据MIT许可证授权。