backy/README.md
Andrew 059f4c0097 added some features
- Added `cron` command to run lists with `cron` time specifed
- Changed `-c` flag to `-f` flag for passing config file
- Modified some config keys
  - cmdArgs -> Args
  - Got rid of `hosts.config`
- better SSH handling
  - respects values in config file
2023-02-01 23:54:48 -06:00

2.4 KiB

Backy - an application to manage backups

This app is in development, and is currently not stable. Expect core functionality to possiblly break.

Installing

To install:

go install git.andrewnw.xyz/CyberShell/backy@master

This assumes you already have a working Go environment, if not please see this page first.

You can also download binaries here and here.

Features

  • Define lists of commands and run them

  • Execute commands over SSH

  • More to come.

To run a config:

backy backup

Or to use a specific file: backy backup -f /path/to/file

If you leave the config path blank, the following paths will be searched in order:

  • ./backy.yaml
  • ~/.config/backy.yaml

Create a file at ~/.config/backy.yaml:

commands:
  stop-docker-container:
    cmd: docker
    Args:
      - compose
      - -f /some/path/to/docker-compose.yaml
      - down
    # if host is not defined, cmd will be run locally
    host: some-host 
  backup-docker-container-script:
    cmd: /path/to/script
    # The host has to be defined in the config file
    host: some-host
  shell-cmd:
    cmd: rsync
    shell: bash
    Args:
      - -av some-host:/path/to/data ~/Docker/Backups/docker-data
  hostname:
    cmd: hostname

cmd-configs:
  cmds-to-run: # this can be any name you want
    # all commands have to be defined
    order:
      - stop-docker-container
      - backup-docker-container-script
      - shell-cmd
      - hostname
    notifications:
      - matrix
    name: backup-some-server
  hostname:
    name: hostname
    order:
      - hostname
    notifications:
      - prod-email

hosts:
  some-host:
    hostname: some-hostname
    config: ~/.ssh/config
    user: user
    privatekeypath: /path/to/private/key
    port: 22
    password: 


logging:
  verbose: true
  file: /path/to/logs/commands.log
  console: false
  cmd-std-out: false


notifications:
  prod-email:
    id: prod-email
    type: mail
    host: yourhost.tld:port
    senderAddress: email@domain.tld
    to:
      - admin@domain.tld
    username: smtp-username@domain.tld
    password: your-password-here
  matrix:
    id: matrix
    type: matrix
    home-server: your-home-server.tld
    room-id: room-id
    access-token: your-access-token
    user-id: your-user-id