━━━━━━━━━ LEO Andinus ━━━━━━━━━ Table of Contents ───────────────── 1 Documentation .. 1.1 Profile .. 1.2 Options ..... 1.2.1 encrypt/sign ..... 1.2.2 delete ..... 1.2.3 help .. 1.3 Configuration 2 Example 3 History Leo is a simple backup program. It creates tar(1) files from a pre-defined list. It can encrypt/sign files with gpg2(1). • Web-site: [https://andinus.nand.sh/leo] • Source: [https://git.tilde.institute/andinus/leo] • Source (mirror): [https://github.com/andinus/leo] 1 Documentation ═══════════════ I use this to quickly backup some of my files. It works on profiles, profiles are simple lists of files which get backed up. 1.1 Profile ─────────── Profile is a simple hash table which contains the list of profiles. The profiles are mapped to a list of file paths relative to `$HOME' which are to be backed up. Complex profiles are hard-coded & simple ones are generated. Complex profiles include profiles that have multiple files or are a mix or files & directories. Simple profiles are profiles with just single directory. You can run `help' to see all the profiles along with the paths. 1.2 Options ─────────── Some options can also be passed through environment variables. That allows for configuration in shell rc file & the user can run leo directly without looking at options. ━━━━━━━━━━━━━━━━━━━━━━ encrypt LEO_ENCRYPT sign LEO_SIGN delete LEO_DELETE ━━━━━━━━━━━━━━━━━━━━━━ 1.2.1 encrypt/sign ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ `encrypt_sign' handles `gpg2' related functions. It passes `--yes' by default. *Note*: `gpg2' might compress the backups depending on your config. Default is to enable compression, if you don't want this then add `-z 0' to `@options'. `-z' specifies the compression level & 0 means no compression. *Note*: My journal is encrypted so to prevent re-encryption `encrypt' option is not passed to gpg2. This only affects journal profile. So `leo --encrypt journal pass' will still encrypt pass. 1.2.2 delete ╌╌╌╌╌╌╌╌╌╌╌╌ Removes the tar file after running gpg2(1). This means that either `encrypt' or `sign' option must be passed. 1.2.3 help ╌╌╌╌╌╌╌╌╌╌ Running just `leo' will print help. 1.3 Configuration ───────────────── There is an example config file under `share/config.pl', move it to config directory & rename to `leo.pl'. ┌──── │ cp share/config.pl $HOME/.config/leo.pl # Copy the config. │ chmod -w $HOME/.config/leo.pl # Make it read-only. └──── *Warning*: Leo will evaluate the configuration file, which means an attacker can use it to run malicious code. *Note*: They could always add malicious code to `.profile' & do harm. Just thought I should put the warning. To edit the config run `chmod +w' on it but please make it read-only again after editing. 2 Example ═════════ ┌──── │ # This will encrypt, sign & also delete the tar file for documents, │ # journal, pass & ssh profile. │ leo --encrypt --sign --delete documents journal pass ssh │ │ # This will do the same. You can add these environment variables to │ # your shell rc & then just run ``leo documents journal ssh pass'' to │ # do the same. │ LEO_ENCRYPT=1 LEO_SIGN=1 LEO_DELETE=1 leo documents journal ssh pass └──── 3 History ═════════ This was Leo's initial description: Leo is a program to run my personal scripts. You might not find them useful, these were previously shell scripts that I rewrote in Perl. I had created a sync function initially & was going to expand it. Then I decided to remove those sync functions because it was too complex, I replaced then with simple `sh' scripts. I added a simple `archive' function later & decided to turn Leo into that function. So, it's not a meta-program anymore. I was thinking of creating something that does all the things for me but that'll be too complex. Later on the same day I removed dispatch table & switched to using simple hash of lists to store backup paths mapped to profiles. And also changed the word "archive" to "backup" everywhere.