A central configuration for commands, especially backup commands.
https://backy.cybershell.xyz/
Andrew
059f4c0097
- 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 |
||
---|---|---|
.vscode | ||
cmd | ||
examples | ||
pkg | ||
.gitignore | ||
.goreleaser.yaml | ||
backy.go | ||
go.mod | ||
go.sum | ||
License | ||
Makefile | ||
PLAN.md | ||
README.md | ||
release |
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