Skip to content

A Golang implementation of Vorta, the Borg Backup client

License

Notifications You must be signed in to change notification settings

borgbase/vorta-go

Repository files navigation

Vorta-Go

An implementation of Vorta in Golang to improve deployment and packaging.

Functional, but still missing some features. Use the Python version if you need something that works.

Progress

Borg Commands:

  • init
  • create
  • info
  • check
  • extract
  • mount
  • delete
  • diff
  • list-archive
  • list-repo
  • prune
  • umount and mount status
  • version

Backend Functionality

  • Keychain/SecretService
  • Background scheduler
  • Single App
  • Read and parse existing SSH keys
  • Create new SSH key
  • Check Borg version for available features
  • Tests
  • Read list of WiFis
  • Check Wifi before scheduled backup
  • Password fallback to database
  • Translations
  • Notifications from scheduler
  • Settings an related functionality (icon color, etc)
  • Sparkle updates for macOS

Packaging (via Docker)

  • macOS
  • Ubuntu 19.04
  • Debian 10
  • Fedora 30
  • Archlinux
  • Windows?

Other issues:

  • Exclusions
  • Cancel button
  • Backup status (icon, menu)
  • Bug: exclusions are lost

Development

  1. Follow the official steps to set up a Go project in Module Mode. E.g. for macOS
export GO111MODULE=on
go install -v -tags=no_env github.com/therecipe/qt/cmd/...
go mod vendor
git clone https://github.com/therecipe/env_darwin_amd64_513.git vendor/github.com/therecipe/env_darwin_amd64_513
  1. Test app using $ qtdeploy -debug -uic=false -quickcompiler test
  2. Package for deployment $ qtdeploy -uic=false -quickcompiler build or make darwin

Important folders:

  • /ui has .ui files provided by Qt Designer
  • /qml has icons and other assets

Deployment

See the Makefile for different deployment options. Needs Docker installed. E.g.

  • $ make darwin
  • $ make linux DISTRO=archlinux

For Linux, Qt5 is linked dynamically to match your distro's look and feel. Install required Qt5 packages like this:

  • Ubuntu/Debian: $ apt install qt5-default libqt5qml5
  • Archlinux: $ pacman -S qt5
  • Fedora: $ yum install qt5-qtbase

Translations (work in progress)

  • extract strings: lupdate -extensions ui ui/*.ui -ts qml/i18n/ui_en.ts
  • merge .ts files: lconvert -i primary.ts secondary.ts -o complete.ts
  • compile .ts to .qm: lrelease qml/i18n/ui_de.ts -qm qml/i18n/ui_de.qm

License and Credits

About

A Golang implementation of Vorta, the Borg Backup client

Resources

License

Stars

Watchers

Forks

Packages

No packages published