bvault is a CLI utility engineered to streamline remote backup workflows. It provides a robust abstraction layer over rsync and cron, replacing ad-hoc shell scripts with a simple, alias-based system for managing connections. This allows developers and administrators to securely transfer, snapshot, and automate backups with ease and reliability.
The core workflow is centered on memorable aliases that define a link between a local path and a remote SSH target. Once configured via a single command, operations like push, pull, and snapshot can be executed without needing to re-enter paths or credentials, enabling both powerful interactive use and dependable automation.
-
Clone the Repository
git clone https://github.com/dante-repo/bvault.git cd bvault -
Run the Installer The script will install dependencies and create a symbolic link to make
bvaultavailable system-wide../install.sh
You may need to restart your terminal for the command to be available.
-
Create & Push a Backup
# Create a connection alias linking a local path to a remote one bvault connect ~/dev/project my-backup user@server.com:/backups/project # Push your first backup bvault push my-backup
| Command | Description |
|---|---|
bvault connect <local_path> <alias> <remote_path> |
Create a new connection alias. |
bvault init <alias> <remote_path> |
Create a connection from the current directory. |
bvault list [--status] |
List all connections, optionally checking live status. |
bvault status <alias> |
Check the health of a specific connection. |
bvault remove <alias> |
Delete a connection alias. |
| Command | Description |
|---|---|
bvault push <alias> |
Push files from local to remote. |
bvault pull <alias> |
Pull files from remote to local. Overwrites local files. |
| Command | Description |
|---|---|
bvault snapshot <alias> |
Create a point-in-time snapshot of a remote backup. |
bvault clean <alias> --older-than <age> |
Delete remote snapshots older than an age (e.g., 30d). |
| Command | Description |
|---|---|
bvault cron add <alias> '<schedule>' <command...> |
Schedule a bvault command. Ex: ... cron add d-push '@daily' push my-bk |
bvault cron list |
List all scheduled cron jobs. |
bvault cron remove <alias> |
Remove a scheduled cron job. |
| Command | Description |
|---|---|
bvault update |
Update bvault to the latest version from git. |
bvault --version |
Show the current installed version. |
bvault stores all connection data in ~/.config/bvault/config.json. Manual editing is not required.
This project is licensed under the MIT License.
