If you’re migrating from the legacy Bash ProxSave to the current Go ProxSave, you can migrate in two ways:
- Recommended: use the built-in migration tool (
--env-migration). See docs/docs_file/migration_tool.md. - Manual: start from a fresh Go backup.env and copy/translate values from the legacy file yourself.
This page documents the manual approach and the key compatibility rules implemented by the Go config parser.
Important notes before you start
- The canonical config file for the Go version is usually configs/backup.env (or the path passed via
--config/-c). proxsave --upgrade-configonly updates an existing Go-style config using the embedded template; it does not perform a legacy Bash migration.- Some legacy keys are still accepted (fallback) for backward compatibility, but not all Bash keys are supported.
Legacy keys still accepted (fallback)
The Go config parser supports a small set of legacy names. If you still have these in your old file, they will continue to work, but migrating to the new names is recommended.
| Legacy key | Preferred key | Notes |
|---|---|---|
| LOCAL_BACKUP_PATH | BACKUP_PATH | Primary backup directory |
| LOCAL_LOG_PATH | LOG_PATH | Logs directory |
| ENABLE_SECONDARY_BACKUP | SECONDARY_ENABLED | Secondary tier on/off |
| SECONDARY_BACKUP_PATH | SECONDARY_PATH | Secondary tier directory |
| ENABLE_CLOUD_BACKUP | CLOUD_ENABLED | Cloud tier on/off |
| RCLONE_REMOTE | CLOUD_REMOTE | Cloud “remote” (rclone remote name or remote:path) |
| CLOUD_CONNECTIVITY_TIMEOUT | RCLONE_TIMEOUT_CONNECTION | Connection timeout seconds |
| MAX_LOCAL_BACKUPS | MAX_LOCAL_BACKUPS | Still valid (also supports LOCAL_RETENTION_DAYS) |
| MAX_SECONDARY_BACKUPS | MAX_SECONDARY_BACKUPS | Still valid (also supports SECONDARY_RETENTION_DAYS) |
| MAX_CLOUD_BACKUPS | MAX_CLOUD_BACKUPS | Still valid (also supports CLOUD_RETENTION_DAYS) |
| PROMETHEUS_ENABLED | METRICS_ENABLED | Metrics on/off |
| PROMETHEUS_TEXTFILE_DIR | METRICS_PATH | Textfile collector directory |
| BACKUP_REMOTE_CFG | BACKUP_REMOTE_CONFIGS | Collector toggle |
| BACKUP_NETWORK_CONFIG | BACKUP_NETWORK_CONFIGS | Collector toggle |
| BACKUP_CRONTABS | BACKUP_CRON_JOBS | Collector toggle |
| PXAR_INCLUDE_PATTERN | PXAR_FILE_INCLUDE_PATTERN | Accepts both key names |
| PXAR_SCAN_ENABLE | BACKUP_PXAR_FILES | Collector toggle |
| FULL_SECURITY_CHECK | SECURITY_CHECK_ENABLED | Security checks toggle |
| ABORT_ON_SECURITY_ISSUES | CONTINUE_ON_SECURITY_ISSUES | Inverted meaning (see below) |
| DISABLE_COLORS | USE_COLOR | Inverted meaning (see below) |
| ENABLE_GO_BACKUP / ENABLE_GO_PIPELINE | (deprecated) | Legacy compatibility flag, usually keep defaults |
| AGE_RECIPIENTS | AGE_RECIPIENT | Used only if AGE_RECIPIENT is not set |
Manual translations you must do
Disk-space thresholds are now in GB (not percent)
The Go version uses “minimum free space” in GB:
- MIN_DISK_SPACE_PRIMARY_GB
- MIN_DISK_SPACE_SECONDARY_GB
- MIN_DISK_SPACE_CLOUD_GB
If you used a “percent used” threshold in the Bash version, you must convert it manually to a minimum free-space number.
Example: if the disk is 100 GB and you want to keep at least 10% free, set:
MIN_DISK_SPACE_PRIMARY_GB=10
Cloud path format (rclone)
The Go version uses:
CLOUD_REMOTE(can be either remote or remote:path)CLOUD_REMOTE_PATH(optional additional path component)
If your legacy config used a single CLOUD_BACKUP_PATH=remote:some/path, translate it as either:
CLOUD_REMOTE=remote:some/path
CLOUD_REMOTE_PATH=
or split it:
CLOUD_REMOTE=remote
CLOUD_REMOTE_PATH=some/path
Inverted boolean keys
Some legacy booleans have inverted meaning compared to their “preferred” key:
DISABLE_COLORS=truecorresponds toUSE_COLOR=falseABORT_ON_SECURITY_ISSUES=truecorresponds toCONTINUE_ON_SECURITY_ISSUES=false
If you migrate manually, set the preferred key explicitly to avoid confusion.
Manual migration steps
- Create a fresh Go config file:
- easiest: run
proxsave --installand let it generate configs/backup.env, or - copy a template (if you have the source tree available): internal/config/templates/backup.env
- Open the legacy and new files side by side and copy values for keys that still apply.
- Apply the manual translations above (disk thresholds, cloud path, inverted booleans).
- Validate with dry-run:
proxsave --dry-run --log-level debug
Verification checklist
- Backup completes with
--dry-run. - Local/secondary/cloud paths point where you expect.
- Notification channels are configured and enabled as intended.
- If encryption is enabled (
ENCRYPT_ARCHIVE=true), recipients exist and decryption has been tested at least once.