Neat little backup program with AES
This repository has been archived on 2024-10-20. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Tracker-Friendly b725b58ff7 Added the amount of time I wasted on this 2024-07-17 09:17:02 +01:00
bin Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00
lib Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00
tests Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00
.gitignore Added dist to the gitignore 2024-07-13 17:15:22 +01:00
LICENSE.md Added a makefile and specifying the config path, added a backup path at /etc/burgerbackup/<server / client>.ini as well as a --help document. 2024-07-13 10:30:35 +01:00
Makefile Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00
README.md Added the amount of time I wasted on this 2024-07-17 09:17:02 +01:00
all_test.go Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00
go.mod Initial commit 2024-07-12 21:53:59 +01:00
go.sum Initial commit 2024-07-12 21:53:59 +01:00
main.go Made the backup mechanism actually work, made filenames carry across client-server, added extensive testing suite, made the configurations actually work, updated the README, added "Makefiles for dummies" (main.go). 2024-07-13 17:13:57 +01:00

README.md

burgerbackup

wakatime

What is this?

It's a simple backup program that sends files to a server. It does this periodically and is designed to have one daemon attached to each file you want to back up.

No, you can't back up a directory. You have to back up each file individually. This is so I don't have to implement tarballs.

It uses AES-256 GCM encryption with a ARGON2ID key derivation function. The key is derived from a password you specify in the config file.

That's practically the most secure encryption you get without breaking some sort of NSA law. It may already be breaking some sort of NSA law. I don't know. I'm not a lawyer.

How does it work?

  1. You run the server on a machine you want to store your backups on.
  2. You run the client on a machine you want to back up files from.
  3. The client sends the server an authentication request, and a password hashed with a salt in SCRYPT.
  4. The client AES encrypts the file and sends it to the server in the same request
  5. The server verifies the hash with its own password, then decrypts the file it and stores it.
  6. The client repeats from step 3 after a specified interval.

Installing

First, have Go installed. Latest version. What are we? Debian?

Run as root

CDIR=$PWD
cd /tmp
git clone https://concord.hectabit.org/hectabit/burgerbackup.git
cd burgerbackup
make install
cd $CDIR
CDIR=

This also puts your environment back to where it was before you started. How nice of me.

Compiling

Root not required. Just run

git clone https://concord.hectabit.org/hectabit/burgerbackup.git
cd burgerbackup
make

The binaries will be located in /dist/bin/

Configuring

Config file

The default config file is located at /etc/burgerbackup/(client/server).ini. You can specify a different config file as a command line argument to either program.

A default config file is provided in (REPO ROOT)/bin/(client/server)/config.ini.example. You can copy this file and modify it to your needs.

Modifying the config is not optional, unless you want some idiot to send random files to your server.