mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	This PR cleans up the docs in a way to make them simpler to ingest by our [docs repo](https://gitea.com/gitea/gitea-docusaurus). 1. It includes all of the sed invocations our ingestion did, removing the need to do it at build time. 2. It replaces the shortcode variable replacement method with `@variable@` style, simply for easier sed invocations when required. 3. It removes unused files and moves the docs up a level as cleanup. --------- Signed-off-by: jolheiser <john.olheiser@gmail.com>
		
			
				
	
	
		
			82 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| date: "2022-11-01T00:00:00+00:00"
 | |
| title: "Storage"
 | |
| slug: "storage"
 | |
| sidebar_position: 5
 | |
| draft: false
 | |
| toc: false
 | |
| menu:
 | |
|   sidebar:
 | |
|     parent: "packages"
 | |
|     name: "Storage"
 | |
|     sidebar_position: 2
 | |
|     identifier: "storage"
 | |
| ---
 | |
| 
 | |
| # Storage
 | |
| 
 | |
| This document describes the storage of the package registry and how it can be managed.
 | |
| 
 | |
| ## Deduplication
 | |
| 
 | |
| The package registry has a build-in deduplication of uploaded blobs.
 | |
| If two identical files are uploaded only one blob is saved on the filesystem.
 | |
| This ensures no space is wasted for duplicated files.
 | |
| 
 | |
| If two packages are uploaded with identical files, both packages will display the same size but on the filesystem they require only half of the size.
 | |
| Whenever a package gets deleted, only the references to the underlying blobs are removed.
 | |
| The blobs get not removed at this moment, so they still require space on the filesystem.
 | |
| When a new package gets uploaded the existing blobs may get referenced again.
 | |
| 
 | |
| These unreferenced blobs get deleted by a [clean up job](administration/config-cheat-sheet.md#cron---cleanup-expired-packages-croncleanup_packages).
 | |
| The config setting `OLDER_THAN` configures how long unreferenced blobs are kept before they get deleted.
 | |
| 
 | |
| ## Cleanup Rules
 | |
| 
 | |
| Package registries can become large over time without cleanup.
 | |
| It's recommended to delete unnecessary packages and set up cleanup rules to automatically manage the package registry usage.
 | |
| Every package owner (user or organization) manages the cleanup rules which are applied to their packages.
 | |
| 
 | |
| |Setting|Description|
 | |
| |-|-|
 | |
| |Enabled|Turn the cleanup rule on or off.|
 | |
| |Type|Every rule manages a specific package type.|
 | |
| |Apply pattern to full package name|If enabled, the patterns below are applied to the full package name (`package/version`). Otherwise only the version (`version`) is used.|
 | |
| |Keep the most recent|How many versions to *always* keep for each package.|
 | |
| |Keep versions matching|The regex pattern that determines which versions to keep. An empty pattern keeps no version while `.+` keeps all versions. The container registry will always keep the `latest` version even if not configured.|
 | |
| |Remove versions older than|Remove only versions older than the selected days.|
 | |
| |Remove versions matching|The regex pattern that determines which versions to remove. An empty pattern or `.+` leads to the removal of every package if no other setting tells otherwise.|
 | |
| 
 | |
| Every cleanup rule can show a preview of the affected packages.
 | |
| This can be used to check if the cleanup rules is proper configured.
 | |
| 
 | |
| ### Regex examples
 | |
| 
 | |
| Regex patterns are automatically surrounded with `\A` and `\z` anchors.
 | |
| Do not include any `\A`, `\z`, `^` or `$` token in the regex patterns as they are not necessary.
 | |
| The patterns are case-insensitive which matches the behaviour of the package registry in Gitea.
 | |
| 
 | |
| |Pattern|Description|
 | |
| |-|-|
 | |
| |`.*`|Match every possible version.|
 | |
| |`v.+`|Match versions that start with `v`.|
 | |
| |`release`|Match only the version `release`.|
 | |
| |`release.*`|Match versions that are either named or start with `release`.|
 | |
| |`.+-temp-.+`|Match versions that contain `-temp-`.|
 | |
| |`v.+\|release`|Match versions that either start with `v` or are named `release`.|
 | |
| |`package/v.+\|other/release`|Match versions of the package `package` that start with `v` or the version `release` of the package `other`. This needs the setting *Apply pattern to full package name* enabled.|
 | |
| 
 | |
| ### How the cleanup rules work
 | |
| 
 | |
| The cleanup rules are part of the [clean up job](administration/config-cheat-sheet.md#cron---cleanup-expired-packages-croncleanup_packages) and run periodically.
 | |
| 
 | |
| The cleanup rule:
 | |
| 
 | |
| 1. Collects all packages of the package type for the owners registry.
 | |
| 2. For every package it collects all versions.
 | |
| 3. Excludes from the list the # versions based on the *Keep the most recent* value.
 | |
| 4. Excludes from the list any versions matching the *Keep versions matching* value.
 | |
| 5. Excludes from the list the versions more recent than the *Remove versions older than* value.
 | |
| 6. Excludes from the list any versions not matching the *Remove versions matching* value.
 | |
| 7. Deletes the remaining versions.
 |