Manual Migration

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-config only 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 keyPreferred keyNotes
LOCAL_BACKUP_PATHBACKUP_PATHPrimary backup directory
LOCAL_LOG_PATHLOG_PATHLogs directory
ENABLE_SECONDARY_BACKUPSECONDARY_ENABLEDSecondary tier on/off
SECONDARY_BACKUP_PATHSECONDARY_PATHSecondary tier directory
ENABLE_CLOUD_BACKUPCLOUD_ENABLEDCloud tier on/off
RCLONE_REMOTECLOUD_REMOTECloud “remote” (rclone remote name or remote:path)
CLOUD_CONNECTIVITY_TIMEOUTRCLONE_TIMEOUT_CONNECTIONConnection timeout seconds
MAX_LOCAL_BACKUPSMAX_LOCAL_BACKUPSStill valid (also supports LOCAL_RETENTION_DAYS)
MAX_SECONDARY_BACKUPSMAX_SECONDARY_BACKUPSStill valid (also supports SECONDARY_RETENTION_DAYS)
MAX_CLOUD_BACKUPSMAX_CLOUD_BACKUPSStill valid (also supports CLOUD_RETENTION_DAYS)
PROMETHEUS_ENABLEDMETRICS_ENABLEDMetrics on/off
PROMETHEUS_TEXTFILE_DIRMETRICS_PATHTextfile collector directory
BACKUP_REMOTE_CFGBACKUP_REMOTE_CONFIGSCollector toggle
BACKUP_NETWORK_CONFIGBACKUP_NETWORK_CONFIGSCollector toggle
BACKUP_CRONTABSBACKUP_CRON_JOBSCollector toggle
PXAR_INCLUDE_PATTERNPXAR_FILE_INCLUDE_PATTERNAccepts both key names
PXAR_SCAN_ENABLEBACKUP_PXAR_FILESCollector toggle
FULL_SECURITY_CHECKSECURITY_CHECK_ENABLEDSecurity checks toggle
ABORT_ON_SECURITY_ISSUESCONTINUE_ON_SECURITY_ISSUESInverted meaning (see below)
DISABLE_COLORSUSE_COLORInverted meaning (see below)
ENABLE_GO_BACKUP / ENABLE_GO_PIPELINE(deprecated)Legacy compatibility flag, usually keep defaults
AGE_RECIPIENTSAGE_RECIPIENTUsed 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=true corresponds to USE_COLOR=false
  • ABORT_ON_SECURITY_ISSUES=true corresponds to CONTINUE_ON_SECURITY_ISSUES=false

If you migrate manually, set the preferred key explicitly to avoid confusion.

Manual migration steps

  1. Create a fresh Go config file:
  • easiest: run proxsave --install and let it generate configs/backup.env, or
  • copy a template (if you have the source tree available): internal/config/templates/backup.env
  1. Open the legacy and new files side by side and copy values for keys that still apply.
  2. Apply the manual translations above (disk thresholds, cloud path, inverted booleans).
  3. 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.