Skip to content

andresbott/goback

Repository files navigation

GoBack

CircleCI

Use

  1. Generate a profile
goback -g > profile.backup.yaml
  1. Modify the profile according to your needs

Details:

  • name: the base name used when generating compressed files

  • remote: if defined, goback will backup remote locations instead of local ones

    • type [ sshPassword | sshKey | sshAgent ]: how to login to the remote server.
    • host: ssh host
    • port: ssh port
    • user: ssh user
    • password: plain text ssh password, used if type is sshPassword
    • privateKey: path to a private key, used if type is sshKey
    • passPhrase: plain text pass phrase to the private key
  • dirs: is a list of directories to compress and download.

    • root: root of the path to backup.
    • exclude: a list of glob patterns of files to exclude from the backup.

example:

- root: /home/user/
  exclude:
    - "*.log"
- root: /var/log
  • mysql: uses mysqldump ( needs to be installed ) to add databases to the backup. list of databases to backup.
    • dbname: database name
    • user: database user to login to the db. Leave empty to let the tool try to get access.
    • pw: database user to login to the db. Leave empty to let the tool try to get access.
    • Note: goback will try to get root credentials for mysql from common locations like /etc/my.cnf

example:

mysql:
    - dbname: dbname
      user: user
      pw: pw

  • syncBackups: will connect to the remote location, and download existing backup files to the local path.

  • destination: local path where backup files are created

  • keep: how many older backups to keep for this profile

  • owner: change the owner of the resulting backup file

  • mode: change the mode of the resulting backup file

  • notify: notify per email if a profile was successful or not

    • to: list of email addresses
    • host: email server host
    • port: email sever port
    • user: email server user to login
    • password: password for that user on the email server

Roadmap

  • backup git repositories
  • write documentation

TODO

  • add option to follow symlink instead of adding them to the backup file
  • use tar.gz instead of zip to keep file permissions
  • don't fail on broken symlinks

Development

Requirements

  • go
  • make
  • docker
  • goreleaser
  • golangci-lint
  • git

Release

make sure you have your gh token stored locally in ~/.goreleaser/gh_token

to release a new version:

make release  version="v0.1.2"