This document describes the new features added to HyperExport.
Display detailed VM information without performing an export. Useful for inspecting VM specifications before export.
# Display VM information (pretty output)
hyperexport --vm-info --vm "MyVM"
# Display VM information (scripting-friendly key=value format)
hyperexport --vm-info --vm "MyVM" --quiet
# Check if VM is powered off before export
hyperexport --vm-info --vm "MyVM" | grep "poweredOff"
--vm-info: Display VM information and exit--vm NAME: Specify the VM name to inspect--quiet: Use simple key=value output format for scriptingPretty Output:
┌─ VM Information ───────────────────────────────────┐
│ Property │ Value │
├───────────────┼────────────────────────────────────┤
│ 🖥️ VM Name │ MyVM │
│ ⚡ Power State│ ● poweredOff │
│ 💿 Guest OS │ Ubuntu Linux (64-bit) │
│ 🧠 Memory │ 8192 MB (8.0 GB) │
│ ⚙️ vCPUs │ 4 │
│ 💾 Storage │ 128.5 GB │
│ 📁 Path │ /Datacenter/vm/production/MyVM │
└────────────────────────────────────────────────────┘
Quiet Output:
name=MyVM
path=/Datacenter/vm/production/MyVM
power_state=poweredOff
guest_os=Ubuntu Linux (64-bit)
cpu=4
memory_mb=8192
storage_bytes=138047488000
Create and manage VM snapshots for safe, consistent exports.
# Create snapshot before export and delete after
hyperexport --vm "MyVM" --snapshot --delete-snapshot
# Create snapshot with custom name
hyperexport --vm "MyVM" --snapshot --snapshot-name "pre-migration-backup"
# Include memory in snapshot
hyperexport --vm "MyVM" --snapshot --snapshot-memory
# Keep last 5 snapshots
hyperexport --vm "MyVM" --snapshot --keep-snapshots 5
# Consolidate all snapshots after export
hyperexport --vm "MyVM" --consolidate-snapshots
--snapshot: Create snapshot before export--delete-snapshot: Delete snapshot after export (default: true)--snapshot-name: Custom snapshot name--snapshot-memory: Include memory in snapshot--snapshot-quiesce: Quiesce filesystem before snapshot (default: true)--keep-snapshots N: Keep only N most recent snapshots--consolidate-snapshots: Consolidate all snapshotsControl download/upload bandwidth to prevent network saturation.
# Limit bandwidth to 10 MB/s
hyperexport --vm "MyVM" --bandwidth-limit 10
# Limit to 5 MB/s with 20 MB burst allowance
hyperexport --vm "MyVM" --bandwidth-limit 5 --bandwidth-burst 20
# Enable adaptive bandwidth (auto-adjusts based on network quality)
hyperexport --vm "MyVM" --adaptive-bandwidth
# Combine with cloud upload
hyperexport --vm "MyVM" --bandwidth-limit 10 --upload s3://my-bucket/backups
--bandwidth-limit N: Limit bandwidth to N MB/s (0 = unlimited)--bandwidth-burst N: Burst allowance in MB--adaptive-bandwidth: Enable adaptive bandwidth adjustmentFixed Limiting: Uses a token bucket algorithm to enforce a steady rate limit.
Adaptive Limiting: Monitors transfer success/error rates and automatically adjusts bandwidth between minimum and maximum speeds.
Export only changed disks to save time and storage.
# Enable incremental export
hyperexport --vm "MyVM" --incremental
# Show incremental analysis without exporting
hyperexport --vm "MyVM" --incremental-info
# Force full export even if incremental is available
hyperexport --vm "MyVM" --force-full
# Incremental export with cloud upload
hyperexport --vm "MyVM" --incremental --upload s3://my-bucket/backups
--incremental: Enable incremental export--force-full: Force full export--incremental-info: Show incremental analysis onlyReceive email notifications for export events.
# Enable email notifications
hyperexport --vm "MyVM" \
--email-notify \
--email-smtp-host smtp.gmail.com \
--email-smtp-port 587 \
--email-from export@example.com \
--email-to admin@example.com \
--email-username export@example.com \
--email-password "your-password"
# Send email only on failure
hyperexport --vm "MyVM" \
--email-notify \
--email-on-start=false \
--email-on-complete=false \
--email-on-failure=true \
--email-smtp-host smtp.gmail.com \
--email-from export@example.com \
--email-to admin@example.com
# Multiple recipients
hyperexport --vm "MyVM" \
--email-notify \
--email-to "admin@example.com,backup@example.com,ops@example.com"
--email-notify: Enable email notifications--email-smtp-host: SMTP server hostname--email-smtp-port: SMTP server port (default: 587)--email-from: From email address--email-to: To email addresses (comma-separated)--email-username: SMTP authentication username--email-password: SMTP authentication password--email-on-start: Send email when export starts--email-on-complete: Send email when export completes (default: true)--email-on-failure: Send email when export fails (default: true)Start Notification:
Success Notification:
Failure Notification:
Automatically clean up old exports to manage disk space.
# Delete exports older than 30 days
hyperexport --cleanup --cleanup-max-age 720h # 30 days
# Keep only last 10 exports
hyperexport --cleanup --cleanup-max-count 10
# Delete oldest when total size exceeds 100 GB
hyperexport --cleanup --cleanup-max-size 107374182400
# Preview cleanup without deleting
hyperexport --cleanup --cleanup-dry-run --cleanup-max-age 720h
# Run cleanup every 24 hours
hyperexport --cleanup-schedule 24h
# Combine age and count limits
hyperexport --cleanup --cleanup-max-age 720h --cleanup-max-count 20
--cleanup: Enable cleanup--cleanup-max-age: Delete exports older than this duration--cleanup-max-count: Keep only N most recent exports--cleanup-max-size: Delete oldest when total exceeds size (bytes)--cleanup-dry-run: Preview cleanup without deleting--cleanup-schedule: Run cleanup every N hoursAll features can be combined for powerful export workflows:
# Complete automated backup
hyperexport --vm "ProductionDB" \
--snapshot \
--delete-snapshot \
--incremental \
--bandwidth-limit 20 \
--email-notify \
--email-smtp-host smtp.gmail.com \
--email-from backups@company.com \
--email-to ops@company.com \
--upload s3://prod-backups/databases \
--cleanup \
--cleanup-max-age 720h \
--cleanup-max-count 30
# Safe, throttled migration
hyperexport --vm "LegacyApp" \
--snapshot \
--snapshot-name "pre-migration-$(date +%Y%m%d)" \
--bandwidth-limit 10 \
--adaptive-bandwidth \
--email-notify \
--email-to migration-team@company.com \
--verify
# Automated daily backups
hyperexport --vm "FileServer" \
--daemon-schedule "daily-backup:0 2 * * *" \
--snapshot \
--incremental \
--upload s3://daily-backups \
--cleanup-schedule 24h \
--cleanup-max-count 7
Save complex configurations as profiles:
# Create a profile
hyperexport --save-profile "production-backup" \
--snapshot \
--incremental \
--bandwidth-limit 20 \
--email-notify \
--cleanup
# Use a profile
hyperexport --profile "production-backup" --vm "MyVM"
Some settings can be configured via environment variables:
# Email configuration
export HYPEREXPORT_SMTP_HOST=smtp.gmail.com
export HYPEREXPORT_SMTP_PORT=587
export HYPEREXPORT_EMAIL_FROM=backups@company.com
export HYPEREXPORT_EMAIL_TO=ops@company.com
# Bandwidth limiting
export HYPEREXPORT_BANDWIDTH_LIMIT=20
# Cleanup settings
export HYPEREXPORT_CLEANUP_MAX_AGE=720h
export HYPEREXPORT_CLEANUP_MAX_COUNT=30
All features are also available through the daemon API:
# Submit job with all features
curl -X POST http://localhost:8080/api/v1/jobs \
-H "Content-Type: application/json" \
-d '{
"vm_path": "/Datacenter/vm/MyVM",
"output_path": "/exports/MyVM",
"snapshot": true,
"incremental": true,
"bandwidth_limit_mbps": 20,
"email_notify": true
}'
| Feature | CPU Impact | Memory Impact | Network Impact |
|---|---|---|---|
| Snapshots | Low | Low | None |
| Bandwidth Limiting | Very Low | Very Low | Controlled |
| Incremental | Low | Low | Reduced |
| Very Low | Very Low | Minimal | |
| Cleanup | Low | Low | None |
All features are designed to have minimal performance impact on the export process.