fezfez/backup-manager

一个不依赖于框架的数据库备份管理器,具有用户自定义的进程,并支持S3、Dropbox、FTP、SFTP等,还有对流行框架的驱动程序。

0.4.2 2023-01-08 14:39 UTC

README

Build Status Type Coverage Type Coverage Latest Stable Version License

此包提供了一个不依赖于框架的数据库备份管理器,用于将数据库导出到任何文件系统以及从任何文件系统恢复数据库。

  • 支持 MySQLPostgreSQL
  • 使用 Gzip 压缩
  • 框架无关
  • 简单的配置

快速而简单的备份和恢复

备份到/从任何配置的数据库。

将开发数据库备份到 Amazon S3。备份路径最终将是 test/backup.sql.gz,当完成 gzip 处理后。

$local = new \League\Flysystem\Adapter\Local(getcwd() . '/data/');
$webdav = new \League\Flysystem\WebDAV\WebDAVAdapter(new \Sabre\DAV\Client([
    'baseUri' => getenv('WEBDAV_HOST'),
    'userName' => getenv('WEBDAV_username'),
    'password' => getenv('WEBDAV_password'),
]), 'remote.php/webdav/');

$manager = \Fezfez\BackupManager\BackupManager::create();
$manager->backup(
    new LeagueFilesystemAdapaterV1($local),
    new \Fezfez\BacpkupManager\Databases\MysqlDatabase(
        getenv('DB_HOST'),
        getenv('DB_PORT'),
        getenv('DB_USER'),
        getenv('DB_PASSWORD'),
        getenv('DB_DATABASE')
    ),
  [
    new \Fezfez\BackupManager\Filesystems\Destination(new LeagueFilesystemAdapaterV1($webdav), 'test/backup.sql')
  ],
  \Fezfez\BackupManager\Compressors\GzipCompressor::create()
);

$manager->restore(
    new LeagueFilesystemAdapaterV1($local),
    new LeagueFilesystemAdapaterV1($webdav),
    'test/backup.sql',
    new \Fezfez\BacpkupManager\Databases\MysqlDatabase(
        getenv('DB_HOST'),
        getenv('DB_PORT'),
        getenv('DB_USER'),
        getenv('DB_PASSWORD'),
        getenv('DB_DATABASE')
    ),
  \Fezfez\BackupManager\Compressors\GzipCompressor::create()
);

备份到/从任何配置的文件系统

test/backup.sql.gzAmazon S3 恢复到 开发 数据库。

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

此包不允许您从一个数据库类型备份并恢复到另一个数据库类型。MySQL 的转储文件不兼容 PostgreSQL。

需求

  • PHP ^8.0
  • MySQL 支持需要 mysqldumpmysql 命令行二进制文件
  • PostgreSQL 支持需要 pg_dumppsql 命令行二进制文件
  • Gzip 支持需要 gzipgunzip 命令行二进制文件

安装

Composer

运行以下命令通过 Composer 包含此包:

composer require fezfez/backup-manager

然后,您需要选择您想要使用的适配器的适当包。

# to support league-flysystem:^1.0
composer require fezfez/backup-manager-league-flysystem-v1

# to support league-flysystem:^2.0
composer require fezfez/backup-manager-league-flysystem-v2

# to support league-flysystem:^3.0
composer require fezfez/backup-manager-league-flysystem-v3

用法

安装后,在可以使用之前,必须对包进行初始化配置(初始配置)。

我们在此处提供了一个原生的 PHP 示例 示例

所需的初始化配置可以在以下示例中找到 这里

贡献指南

我们建议使用此包提供的 vagrant 配置进行开发和贡献。只需安装 VirtualBox、Vagrant 和 Ansible,然后在根目录中运行 vagrant up。将为您构建并启动一个专门为该包的开发设计的虚拟机。

在贡献时请考虑以下指南

  • 代码风格为 PSR-2
    • 接口不应以 Interface 结尾,特质不应以 Trait 结尾。
  • 所有方法和类都必须包含文档块。
  • 确保您提交的测试至少有 100% 的覆盖率。鉴于项目的简单性,这只是为了使事情变得合理。
  • 在计划拉取请求以添加新功能时,提交一个提案以确保与项目的目标兼容可能是明智的 这里

向后兼容性中断

许可

此包根据 MIT 许可证 许可。尽情使用。