ha-backup v3.2.0
Go port of home_assistant_backup.sh. Uses the same home_assistant_backup.conf.
Build
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ha-backup .
Override the version at build time if needed: CGO_ENABLED=0 go build -trimpath -ldflags="-s -w -X main.version=3.1.2" -o ha-backup .
Check the version: ./ha-backup -version
Cross-compile examples: GOOS=linux GOARCH=amd64 go build -o ha-backup-linux-amd64 . GOOS=linux GOARCH=arm64 go build -o ha-backup-linux-arm64 . # Raspberry Pi / ARM NAS
Logging
ha-backup writes a log to /var/log/ha-backup.log by default. Each line is timestamped, and the file is appended to on every run. The same output is still printed to the console.
Create the log file
Writing to /var/log requires elevated permissions, so create the file once and give ownership to the user that runs the backup. Replace backupuser with that user (use root if you run it as root):
If you'd rather do it in steps:
sudo touch /var/log/ha-backup.log
sudo chown backupuser:backupuser /var/log/ha-backup.log
sudo chmod 640 /var/log/ha-backup.log
If the log file can't be opened, ha-backup prints a warning and continues the backup without file logging.
Change or disable the log location
Set LOG_FILE in home_assistant_backup.conf:
LOG_FILE="/var/log/ha-backup.log" # default
LOG_FILE="/home/backupuser/ha-backup.log" # custom path
LOG_FILE="none" # disable file logging
Run
./ha-backup # looks for home_assistant_backup.conf next to the binary, then in cwd
./ha-backup -config /path/to.conf
Requires ssh and scp on the machine running it. jq and yq are no longer needed.