elektro-potkan / 备份管理器存档
备份 - 存档管理器
Requires
- php: >= 7.2
- elektro-potkan/backups: ^1.1.0
- nette/utils: ^3.0.1
Requires (Dev)
- nette/tester: ^2.3
- phpstan/phpstan: ^0.12
- phpstan/phpstan-deprecation-rules: ^0.12
- phpstan/phpstan-nette: ^0.12
- phpstan/phpstan-strict-rules: ^0.12
README
创建整个备份的存档的管理器。
用法
要使用管理器,您至少需要phar
扩展。为了支持压缩tar存档,还需要安装zlib
(gzip)或bzip2
扩展。
如果phar
扩展对您不可用,可以使用zip
扩展作为后备(但您将仅限于zip格式)。
如果将格式设置为AUTO
(如果没有提供则为默认值),管理器将检测可用的扩展并从列表中选择第一个可能的格式
TAR_BZIP2
TAR_GZIP
TAR
ZIP
示例
存档管理器仅增强了主elektro-potkan/backups
包的功能。首先查看其README中的示例。
$manager = new ElektroPotkan\Backups\Managers\Archive(
'path-to-backups-directory',
'MyApp-v1.47.2',
$purgeRule,
ElektroPotkan\Backups\Managers\Archive::ARCHIVE_FORMAT_ZIP,
'_bak_',// archive name suffix (default empty; must not collide with the jobs' names)
true// keep individual backup files (default false = delete them after creating the final archive)
);
备份主文件
当使用$manager->get($id)
或$manager->list()
检索现有备份时,返回的IBackup
实例将具有mainFile
属性设置为存档文件。
$backup->mainFile;// the whole-backup archive as IBackupFile instance
$backup->files;// IBackupFile instances of the individual files (except the archive)
// Empty if the files were deleted after creating the archive
// (depends on the Archive manager configuration above).
管理器没有任何类型的内部存储或缓存,每次调用都是从文件系统检索的。否则很容易出现不同步。因此,当存档名称或格式的配置更改时,旧备份的主文件可能无法正确地从单个文件中过滤出来。在这种情况下,mainFile
属性将为null
,存档文件将包含在files
属性中。
存档名称与作业名称
作业文件使用与Simple
/Locking
备份管理器(由主elektro-potkan/backups
包提供)相同的模式命名。
timestamp_date_name_job-name.ext
例如,对于配置了MyApp-v1.47.2
作为$name
参数的管理器,在2021-08-30 20:07:24 UTC
创建的备份,使用名称test
添加的作业并返回扩展名txt
,生成的文件名将是
1630354044_2021-08-30_MyApp-v1.47.2_test.txt
如果管理器配置了空的$archiveName
(默认值)和tar作为存档格式,生成的存档文件名将是
1630354044_2021-08-30_MyApp-v1.47.2.tar
如果配置为_bak_
作为存档名称(如示例中所示),生成的存档文件名将是
1630354044_2021-08-30_MyApp-v1.47.2_bak_.tar
存档名称没有隐式分隔符(对于作业,总是下划线和非空作业名称)。
因此,您不能有一个名为_something
的存档名称,使用zip格式,并且有一个名为something
的作业返回zip
作为其扩展名。在这种情况下,当您尝试添加具有此类冲突名称和扩展名的作业时,管理器将抛出InvalidArgumentException
。
作者
Elektro-potkan git@elektro-potkan.cz
信息
版本控制
此项目使用语义版本控制 2.0.0 (semver.org)。
分支
此项目使用略微修改的Git-Flow工作流程和分支模型
- https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- https://nvie.com/posts/a-successful-git-branching-model/
许可证
您可以在BSD Zero Clause License或GNU通用公共许可证(GPL)版本3或更高版本下使用此程序。
请参阅文件LICENSE。