diff options
Diffstat (limited to 'readme.md')
-rw-r--r-- | readme.md | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -31,3 +31,51 @@ Backups are stored as-is on the remote server: If your backup requires it, encrypt it! ## Usage + +1. Intall the CLI with cargo: + `cargo install --path /path/to/online-offsite-backup` + +2. Place a configuration file somewhere. + ```toml + [storage] + root = "/home/muffin/temp/backuptest" + size = 1_000_000_000 # maximum size of a single backup version + versions = 3 # number of backups to keep + upload_cooldown = 864000 # cooldown in seconds for backup uploads + download_cooldown = 43200 # cooldown in seconds for backup downloads + upload_speed = 3_000_000 # maximum sustained backup upload speed in bytes per second + download_speed = 3_000_000 # maximum sustained backup download speed in bytes per second + + [server] + address = "127.0.0.1:29285" + + [[peer]] + name = "alice" + address = "aliceserver.net:29285" + shared_secret = "hunter2" + + [[peer]] + name = "bob" + address = "bobserver.net:29285" + shared_secret = "p4ssw0rd" + ``` +3. Start uploading a backup: `backuptool config.toml upload /path/to/backup` +4. List currently stored backups: `backuptool config.toml list` +5. Restore a remote backup by serial: + `backuptool config.toml download 2 /path/to/restore` +6. See further usage `backuptool --help` + +## Protocol + +Connect to the server via TCP and follow this simple text-based protocol. +Whenever there is an error the server replies `error,<message>` and then +disconnects you.First send a line with the shared secret, then send commands. + +- `list`: Client sends `list` on a line. The server replies with multiple lines + in the format `<mtime>:<size>:<serial>` ended with a single empty line. +- `upload`: Client sends `upload,<size>` on a line. If accepted the server + replies `ready`. The client should now send exactly as many bytes as + announced. Once done the server replies `done` on a line. +- `download`: Client sends `download,<serial>` on a line. If accepted the server + replies `ready,<size>` on a line and then continues sending exactly this many + bytes before concluding with `done` on a line. |