存储
本文档描述了包仓库的存储方式及其管理方法。
重复数据删除
包仓库内置了上传数据块的重复数据删除功能。如果上传了两个相同的文件,则文件系统上只保存一个数据块。这确保了不会因重复文件而浪费空间。
如果上传了两个具有相同文件的包,则两个包将显示相同的大小,但在文件系统上,它们只占用一半的空间。当一个包被删除时,只有对底层数据块的引用被删除。数据块此时不会被删除,因此它们仍然占用文件系统上的空间。当一个新包被上传时,现有的数据块可能会再次被引用。
这些未引用的数据块将通过 清理作业 删除。配置设置 OLDER_THAN
配置了未引用的数据块在被删除之前保留的时间长度。
清理规则
包仓库随着时间的推移可能会变得很大,如果没有清理,可能会占用大量空间。建议删除不必要的包并设置清理规则以自动管理包仓库的使用。每个包所有者(用户或组织)都管理适用于其包的清理规则。
设置 | 描述 |
---|---|
启用 | 启用或禁用清理规则。 |
类型 | 每条规则管理一种特定类型的包。 |
将模式应用于完整包名 | 如果启用,以下模式将应用于完整包名(package/version )。否则,仅使用版本 (version )。 |
保留最新版本 | 为每个包始终保留多少个版本。 |
保留匹配版本的包 | 确定保留哪些版本的正则表达式模式。空模式不保留任何版本,而 .+ 保留所有版本。容器仓库将始终保留 latest 版本,即使未配置也是如此。 |
删除比指定时间更早的版本 | 仅删除比选定天数更早的版本。 |
删除匹配版本的包 | 确定删除哪些版本的正则表达式模式。空模式或 .+ 会导致删除所有包,除非其他设置说明了其他情况。 |
每个清理规则都可以显示受影响包的预览。这可以用来检查清理规则是否配置正确。
正则表达式示例
正则表达式模式会自动用 \A
和 \z
锚点包围。不要在正则表达式模式中包含任何 \A
、\z
、^
或 $
标记,因为它们不是必需的。模式不区分大小写,这与 Gitea 中包仓库的行为一致。
模式 | 描述 |
---|---|
.* | 匹配所有可能的版本。 |
v.+ | 匹配以 v 开头的版本。 |
release | 仅匹配版本 release 。 |
release.* | 匹配名为 release 或以 release 开头的版本。 |
.+-temp-.+ | 匹配包含 -temp- 的版本。 |
v.+|release | 匹配以 v 开头或名为 release 的版本。 |
package/v.+|other/release | 匹配以 v 开头的包 package 的版本,或包 other 的版本 release 。这需要启用设置 将模式应用于完整包名。 |
清理规则的工作原理
清理规则是 清理作业 的一部分,并定期运行。
清理规则
- 收集所有者仓库中所有类型的包。
- 对于每个包,它收集所有版本。
- 从列表中排除 # 基于 保留最新版本 值的版本。
- 从列表中排除任何匹配 保留匹配版本的包 值的版本。
- 从列表中排除比 删除比指定时间更早的版本 值更晚的版本。
- 从列表中排除任何不匹配 删除匹配版本的包 值的版本。
- 删除剩余的版本。