Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

182 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Myba — git-based backup with encryption

Build status Coverage: 98% Language: shell / Bash Source lines of code Script size Issues Sponsors

Myba (pronounced: mỹba) is an open-source, secure, distributed, version-controlled, encrypted file backup software based on git, for Linux, MacOS, BSDs, and possibly even Windows/WSL. In a world of vice, instability, "evergreen" browsers, fast-moving markets and near constant supply chain attacks, it's the only kind of backup—a timeless shell script that relies on few, well-tested, stable technologies. Its only dependencies are:

  • a running shell / standard POSIX environment (sh, bash, zsh, dash, ... WSL?),
  • gzip
  • git (and Git LFS for files sized >40 MB),
  • either OpenSSL (AES256-CTR, no HMAC) or GPG (AES256-CFB, fully AEAD*) for encryption,

all of which one can find most popularly available.

∗ In CTR mode, plaintext contents of encrypted files with (accidental or malicious) bit flips are still recoverable, whereas in the AEAD mode they are not. See anecdote.

Learn more about the project on this backup tool project website.

See test_smoke.sh for a covering example / test case!

%%{init: {"flowchart": {"diagramPadding": 150}}}%%
flowchart LR
    User((User))
    Remote[Cloud provider]

    subgraph LD[Local disk]
        direction LR
        Plain[plaintext repo]
        Encrypted[encrypted repo]
        Plain <-->|encryption| Encrypted
    end

    User -->|commit files| Plain
    Encrypted -->|git push| Remote
Loading

Contributing

The script is considered mostly feature-complete, but there remain bugs and design flaws to be discovered and ironed out, as well as any TODOs and FIXMEs marked in the source.

All source code lines are open to discussion. Especially appreciated are targets for simplification and value-added testing.