tecactus / backap
MySQL数据库备份管理器
Requires
- php: ^5.3.2 || ^7.0
- herrera-io/phar-update: ^2.0
- illuminate/support: ^5.1 || ^5.2
- league/flysystem: ~1.0
- league/flysystem-dropbox: ~1.0
- nesbot/carbon: ~1.0
- symfony/console: ~2.0 || ~3.0
- symfony/yaml: ~3.0
- vlucas/phpdotenv: ~2.2
This package is not auto-updated.
Last update: 2024-09-24 22:37:58 UTC
README
Backap是一个用PHP编写的MySQL数据库备份管理器,可以打包成PHAR文件。Backap旨在通过简单的CLI命令简化MySQL数据库的导出、恢复和同步过程。
如何开始使用?
您可以使用以下三种方式使用Backap:
作为Phar(推荐)
您可以从Backap的官方网站下载一个预编译的Phar版本
$ curl -LSs https://tecactus.github.io/backap/installer.php | php
该命令将检查您的PHP设置,警告您任何问题,并将其下载到当前目录。然后,您可以将其放置在任何易于访问的位置(例如/usr/local/bin
),并更改权限为755
。您甚至可以将其重命名为backap
,以避免每次都必须键入.phar
扩展名。
$ backap --version
每当应用程序发布新版本时,您只需运行update
命令即可获取最新版本
$ backap update
作为全局Composer安装
当您以这种方式安装了其他工具(如phpunit)时,这可能是最好的方法
$ composer global require tecactus/backap --prefer-source
作为Composer依赖项
您还可以将Backap安装为Composer管理项目的依赖项
$ composer require --dev tecactus/backap
或
{ "require-dev": { "tecactus/backap": "~1.0" } }
安装应用程序后,您可以通过运行help
命令来获取有关所有可用命令的详细信息。这应该是您获取有关如何使用Backap的信息的首选位置。
$ backap help
可用命令
init
init
命令会在当前目录中创建一个名为.backap.yaml
的yaml配置文件。
$ backap init
.backap.yaml
文件结构如下
backap_storage_path(可选)
在此属性中,您可以定义所有使用Backap生成的备份文件将存储的路径。
如果定义了此路径,则此路径必须是绝对路径。
backap_storage_path: /absolute/path/to/backups/folder
如果定义了任何路径或省略了此属性,Backap将在当前目录中创建一个storage/database
文件夹。
mysqldump_path(可选)
在此属性中,您可以定义mysqldump
的位置。
如果定义了此路径,则此路径必须是绝对路径。
mysqldump_path: /path/to/mysqldump
如果定义了任何路径或省略了此属性,Backap将尝试调用全局引用的mysqldump
。
mysql_path(可选)
在此属性中,您可以定义mysql
的位置。
如果定义了此路径,则此路径必须是绝对路径。
mysql_path: /path/to/mysql
如果定义了任何路径或省略了此属性,Backap将尝试调用全局引用的mysql
。
timezone(可选)
在此属性中,您可以定义一个特定的时区,以知道备份文件是在何时生成的。
此时区必须有一个有效的名称。
例如
timezone: America/Lima
如果定义了任何时区或省略了此属性,Backap将使用UTC。
enable_compression(可选)
Backap默认生成.sql
文件,您可以通过启用压缩来告诉Backap压缩生成的备份文件,然后Backap将生成.sql.gz
文件。
如果定义了此值,则此值必须是布尔值。
enable_compression: true
如果定义了任何值或省略了此属性,Backap默认将压缩设置为false
。
default_connection(强制)
Backap需要知道您的哪个数据库连接将进行导出或恢复,这就是为什么您必须定义一个默认连接,以便在您没有明确指定时进行工作。
连接名称必须在connections数组属性中声明。
default_connection: myconnection
connections(强制)
Backap可以同时处理多个数据库连接,但首先您必须定义每个连接并为其分配不同的名称。
每个连接必须声明 *主机名、数据库名和用户名* 属性。端口和密码是可选的。
例如
connections: myconnection: hostname: 192.168.1.27 port: 3306 database: important_db username: userdb password: supersecretpassword
在示例中,我们定义了一个名为 myconnection
的连接。当然,您可以定义尽可能多的连接。
connections: ... myconnection: hostname: 192.168.1.27 port: 3306 database: important_db username: userdb ... otherconnection: hostname: 177.200.100.9 port: 3306 database: other_db username: admindb password: supersecretpassword ...
云(可选)
Backap 允许您将与云服务提供商(如 Dropbox)的备份文件同步。要启用此功能,您必须声明一个名为 cloud
的数组属性,并在其中以唯一名称声明每个云适配器,这些适配器也将可用于同步。
例如
cloud: adapaterone: ... adapatertwo: ...
每个提供商都需要不同的参数,因此每个适配器都需要不同的属性,但它们都必须有一个名为 provider
的属性。
例如
cloud: adapaterone: provider: dropbox ...
Dropbox 适配器
要声明一个 Dropbox 适配器,您必须定义以下属性
- provider 为 dropbox
- access_token 在 Dropbox for Developers 上生成
- app_secret 在 Dropbox for Developers 上生成
- path 将是 Dropbox 内部的路径
例如
cloud: dropbox: provider: dropbox access_token: your_access_token app_secret: your_secret path: /path/on/your/dropbox
mysql:dump
mysql:dump
命令将 default_connection
数据库导出。
$ backap mysql:dump
--connection, -c
您可以明确指定一个或多个要导出的连接
$ backap mysql:dump --conection myconnection --connection otherconnetion
或
$ backap mysql:dump -c myconnection -c otherconnection
--no-compress
禁用文件压缩,无论是否在 .backap.yaml
文件中启用。此选项将始终被 --compress
选项覆盖。
$ backap mysql:dump --no-compress
--compress
启用文件压缩,无论是否在 .backap.yaml
文件中禁用。此选项将始终覆盖 --no-compress
选项。
$ backap mysql:dump --compress
--sync, -s
在导出文件时,您可以与一个或多个云提供商同步导出文件。此选项将始终被 --sync-all
选项覆盖。
$ backap mysql:dump --sync dropboxone --sync dropboxtwo
或
$ backap mysql:dump -s dropboxone -s dropboxtwo
--sync-all, -S
您还可以在导出文件时与所有定义的云提供商同时同步。此选项将始终覆盖 --sync
选项。
$ backap mysql:dump --sync-all
或
$ backap mysql:dump -S
mysql:restore
mysql:restore
命令从备份文件恢复 default_connection
数据库。
$ backap mysql:restore
mysql:restore
命令显示所有可用的备份文件列表,仅限于连接的数据库。最新备份文件被选中作为默认值。然后 Backap 会询问您是否继续数据库恢复。
--conection, -c
您可以明确指定要恢复的连接名称
$ backap mysql:restore --conection otherconnetion
或
$ backap mysql:restore -c otherconnection
--filename, -f
您可以明确指定要恢复的备份文件名称
$ backap mysql:restore --filename mybackupfile.sql
或
$ backap mysql:restore -f mybackupfile.sql
--all-backup-files, -A
mysql:restore
命令默认显示所有可用的备份文件列表,仅限于定义的连接的数据库,但您可以使用 --all-backup-files
选项来返回 Backap 生成的所有备份文件的列表。最新备份文件被选中作为默认值。
$ backap mysql:restore --all-backup-files
或
$ backap mysql:restore -A
--restore-latest-backup , -L
明确恢复连接数据库的最新备份文件。
$ backap mysql:restore --restore-latest-backup
或
$ backap mysql:restore -L
--yes, -y
mysql:restore
命令始终要求您确认操作,但您可以使用 --yes
选项确认,而无需看到确认提示。
$ backap mysql:restore --yes
或
$ backap mysql:restore -y
--from-cloud, -C
显示可以从中检索备份文件的云提供商列表。
$ backap mysql:restore --from-cloud
或
$ backap mysql:restore -C
--from-provider, -p
明确指定要从中检索备份文件的云提供商
$ backap mysql:restore --from-provider dropboxone
或
$ backap mysql:restore -p dropboxone
files
files
命令显示一个表格,其中包含存储在 backap_storage_path
上的所有备份文件的详细信息。
$ backap files
--from-cloud, -C
显示可以从中检索备份文件的云提供商列表。
$ backap files --from-cloud
或
$ backap files -C
--from-provider, -p
明确指定要从中检索备份文件的云提供商
$ backap files --from-provider dropboxone
或
$ backap files -p dropboxone
sync
《sync》命令允许您与云服务提供商同步备份文件。可以从云服务中拉取文件或将文件推送到远程存储服务提供商。默认情况下,sync
命令会要求您从已配置的服务提供商列表中选择一个,但您可以使用--provider
选项明确指定一个服务提供商。
push
执行push
操作会将本地存储的所有备份文件同步到选定的远程服务提供商。
$ backap sync push
或
$ backap sync push --provider dropboxone
或
$ backap sync push -p dropboxone
pull
执行pull
操作会将选定的服务提供商上存储的所有备份文件同步到您的本地存储文件夹。
$ backap sync pull
或
$ backap sync pull --provider dropboxone
或
$ backap sync pull -p dropboxone