Skip to main content
Manage workspace snapshots for backup and sharing.

Synopsis

osmedeus snapshot <command> [flags]

Commands

CommandDescription
export <workspace>Export workspace as ZIP archive
import <source>Import workspace from file or URL
listList available snapshots

snapshot export

Export a workspace as a compressed ZIP archive.
osmedeus snapshot export <workspace> [flags]

Flags

FlagDescription
-o, --output <path>Custom output path

Examples

# Export workspace
osmedeus snapshot export example.com

# Custom output path
osmedeus snapshot export example.com -o /tmp/backup.zip

# Export to specific directory
osmedeus snapshot export example.com -o ~/backups/example-backup.zip

Output

$ osmedeus snapshot export example.com
Exporting workspace: example.com
  - Including files: 156
  - Including database records: 423
  - Compressing...

 Snapshot exported: ~/osmedeus-base/snapshots/example.com-20240115-143022.zip
  Size: 12.5 MB

Contents

The ZIP archive includes:
  • All workspace files and directories
  • Database records (assets, vulnerabilities, runs)
  • Workflow state files

snapshot import

Import a workspace from a ZIP archive or URL.
osmedeus snapshot import <source> [flags]

Flags

FlagDescription
-f, --forceOverwrite existing workspace
--skip-dbImport files only (no database)

Sources

  • Local file path
  • HTTP/HTTPS URL

Examples

# Import from local file
osmedeus snapshot import ~/backup.zip

# Import from URL
osmedeus snapshot import https://example.com/workspace-backup.zip

# Force overwrite existing
osmedeus snapshot import ~/backup.zip --force

# Files only (skip database import)
osmedeus snapshot import ~/backup.zip --skip-db

Output

$ osmedeus snapshot import ~/backup.zip
Importing snapshot: backup.zip
  - Extracting files...
  - Importing database records...
    - Assets: 342
    - Vulnerabilities: 15
    - Runs: 3

 Workspace imported: example.com
  Location: ~/osmedeus-base/workspaces/example.com

Conflict Handling

Without --force:
$ osmedeus snapshot import ~/backup.zip
Error: Workspace 'example.com' already exists
Use --force to overwrite
With --force:
$ osmedeus snapshot import ~/backup.zip --force
Warning: Overwriting existing workspace 'example.com'
Importing snapshot...
 Workspace imported: example.com

snapshot list

List available snapshots.
osmedeus snapshot list [flags]
Aliases: ls

Output

$ osmedeus snapshot list
Available Snapshots:

┌────────────────────────────────────────────┬────────────┬─────────────────────┐
 Filename Size Created
├────────────────────────────────────────────┼────────────┼─────────────────────┤
 example.com-20240115-143022.zip 12.5 MB 2024-01-15 14:30:22
 target.org-20240114-091500.zip 8.2 MB 2024-01-14 09:15:00
 pentest-20240110-120000.zip 45.1 MB 2024-01-10 12:00:00
└────────────────────────────────────────────┴────────────┴─────────────────────┘

Total: 3 snapshots (65.8 MB)
Location: ~/osmedeus-base/snapshots/

Snapshot Location

Default location: ~/osmedeus-base/snapshots/ Naming convention: {workspace}-{date}-{time}.zip

Use Cases

Backup Before Major Scan

# Export current state
osmedeus snapshot export example.com

# Run potentially destructive scan
osmedeus run -f aggressive-scan -t example.com

Share Results

# Export workspace
osmedeus snapshot export client-assessment -o /tmp/client-results.zip

# Share the ZIP file

Migrate to Another Machine

# On source machine
osmedeus snapshot export example.com -o /tmp/workspace.zip
scp /tmp/workspace.zip user@target:/tmp/

# On target machine
osmedeus snapshot import /tmp/workspace.zip

Restore from Backup

# List available snapshots
osmedeus snapshot list

# Import specific backup
osmedeus snapshot import ~/osmedeus-base/snapshots/example.com-20240115.zip --force

API Equivalent

# List snapshots
curl http://localhost:8002/osm/api/snapshots \
  -H "Authorization: Bearer $TOKEN"

# Export workspace
curl -X POST http://localhost:8002/osm/api/snapshots/export \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"workspace": "example.com"}'

# Import from URL
curl -X POST http://localhost:8002/osm/api/snapshots/import \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source": "https://example.com/backup.zip"}'

# Download snapshot
curl http://localhost:8002/osm/api/snapshots/download/example.com-backup.zip \
  -H "Authorization: Bearer $TOKEN" \
  -o backup.zip

Notes

  • Snapshots include both files and database records
  • Use --skip-db to import files only
  • Large workspaces may take time to compress/decompress
  • URL imports download to temp location first

See Also