跳至主要内容
版本:1.22.3

存储

本文档描述了包仓库的存储方式及其管理方法。

重复数据删除

包仓库内置了上传数据块的重复数据删除功能。如果上传了两个相同的文件,则文件系统上只保存一个数据块。这确保了不会因重复文件而浪费空间。

如果上传了两个具有相同文件的包,则两个包将显示相同的大小,但在文件系统上,它们只占用一半的空间。当一个包被删除时,只有对底层数据块的引用被删除。数据块此时不会被删除,因此它们仍然占用文件系统上的空间。当一个新包被上传时,现有的数据块可能会再次被引用。

这些未引用的数据块将通过 清理作业 删除。配置设置 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。这需要启用设置 将模式应用于完整包名

清理规则的工作原理

清理规则是 清理作业 的一部分,并定期运行。

清理规则

  1. 收集所有者仓库中所有类型的包。
  2. 对于每个包,它收集所有版本。
  3. 从列表中排除 # 基于 保留最新版本 值的版本。
  4. 从列表中排除任何匹配 保留匹配版本的包 值的版本。
  5. 从列表中排除比 删除比指定时间更早的版本 值更晚的版本。
  6. 从列表中排除任何不匹配 删除匹配版本的包 值的版本。
  7. 删除剩余的版本。