Skip to main content
Basecut automatically versions every snapshot you create, allowing you to maintain multiple point-in-time captures of your database and reference specific versions when restoring.

How Versioning Works

Every time you run basecut snapshot create with the same --name, Basecut creates a new version rather than overwriting the previous one.

Generated Tags

Each version is automatically assigned a unique, human-readable tag using an adjective-animal format:
These tags are generated by the Basecut API when you create a snapshot without providing an explicit tag.

Storage Structure

Snapshot references are name/tag based (dev-seed:brave-lion), while cloud storage objects are keyed by internal job IDs (for example <prefix>/snapshots/<job-id>/...). Use CLI/API metadata (snapshot list and snapshot inspect) to map a name/tag reference to its storage location.

Referencing Snapshots

Using :latest

The most common pattern—reference the newest version:
What happens:
  1. Basecut scans all versions of dev-seed
  2. Selects the most recently created version
  3. Restores that version
Use case: Development workflows where you always want the freshest data.

Using Specific Tags

Reference an exact version by its unique tag:
What happens:
  1. Basecut resolves dev-seed:brave-lion to an exact snapshot record
  2. Restores that specific version
  3. Fails if that tag doesn’t exist
Use cases:
  • Reproducing a bug with the exact data state
  • Rolling back to a known-good snapshot
  • Compliance/audit requirements for specific dates

Implicit :latest

Omitting the version defaults to :latest:

Custom Tags

You can override the automatic tag generation by providing your own tag using the --tag or -t flag:
Referencing by custom tag:
Custom tags must be lowercase alphanumeric with hyphens, starting and ending with an alphanumeric character. The tag latest is reserved.

Version Management

Listing Versions

List snapshots from the CLI:
For deeper details on one version:

Deleting Old Versions

Delete snapshot metadata from the CLI:
For object cleanup, use storage lifecycle policies (recommended) or your storage provider CLI (aws s3 rm, gsutil rm).

Best Practices

1. Use Descriptive Snapshot Names

Names should indicate purpose, not just content: Good:
Avoid:

2. Establish Naming Conventions

Pattern: <environment>-<purpose>[-<context>] Examples:
  • dev-seed - Daily development data
  • staging-smoke - Smoke test data for staging
  • prod-debug-issue-456 - Production debugging snapshot
  • qa-regression-v2.0 - QA regression testing for v2.0

3. Automate Snapshot Rotation

Schedule snapshot creation in CI (see CI/CD Integration) and configure storage lifecycle policies to automatically delete old versions.

4. Document Version Purpose

Add metadata to your snapshot manifest for traceability:
Result in manifest.json:

5. Use Separate Snapshots for Different Use Cases

Don’t overload a single snapshot name: Antipattern:
Better approach:
Why: Prevents accidental overwrites and makes version management clearer.

Troubleshooting

”Version Not Found”

Symptom:
Solutions:
  1. List available versions:
  2. Check for typos in tag:
  3. Use :latest instead:

“Multiple Versions Found”

This shouldn’t happen—Basecut resolves versions using unique snapshot tags and IDs. If you see this error, file a bug report.

Next Steps

Snapshots Overview

Understand snapshot anatomy and structure

Storage Providers

Configure S3, GCS, or local storage

Common Workflows

Patterns for versioning in practice

CLI Reference

Complete command documentation