You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
BSV - Backup, Synchronization, Versioning
Bsv is a tool to perform backups, file/directory synchronization between devices and light versioning. It's architecture is inspired from git, but focus on backup first, synchronization second and as a byproduct also allow versioning.
Bsv is in a very early stage of development and is not production ready yet.
Development setup
Bsv currently only supports Python >= 3.11. Once you have a compatible Python version, just fetch the code and install bsv in editable mode in a virtual env:
git clone https://git.draklia.net/draklaw/pybsv.git
cd pybsv
python -m venv venv
. venv/bin/activate
pip install -e .[test]
This will automatically install the dependencies (including pytest). Happy hacking !
Roadmap
v0.0.1 - MVP
bsv init [<destination>] [--repo <local-repo-path>]command to initialize bsv.bsv repo [-v]list all known repositories.bsv repo create <name> <destination>create a new repository.bsv repo add [<name>] <destination>add an already existing repository.bsv repo remove <name>|<destination>remove a repository.bsv maplist mappings between bsv paths and filesystem paths.bsv map add <bsv-path> <fs-path>add a mapping.bsv map remove <bsv-path> <fs-path>remove a mapping.bsv logshow the history of snapshots.bsv show <digest>show the objectdigest.bsv ls <bsv-path>list files in a bsv directory.bsv mkdir <bsv-path>create a directory in bsv directly.bsv add <fs-path> <bsv-path>copy files from the filesystem to bsv.bsv get <bsv-path> <fs-path>copy files from bsv to the filesystem.bsv snapshotcapture a snapshot, i.e. to ensure that mapped files in the repositories match what is on the filesystem.bsv restore <snapshot> <fs-path>update files on the filesystem to the version captured bysnapshot.- Simple CAS implementation (it's OK if it's naïve).
- Content-based chunking to store files.
Later
bsv fetch [<name>]fetch latest metadata from known repositories.bsv syncsimilar tosnapshot+fetch+restore: Fetch latest changes from the repositories and update the filesystem to match. In case of conflict (file changed both in the repositories and locally), performs a snapshot first to ensure all conflicting versions are backed'up, then use some conflict-resolution strategy and warn the user.bsv tag <name> [<snapshot>] [-m <message>]set/update a tag (an alias to a specific snapshot).bsv watchstarts a daemon that watch changes in mapped directories and automatically create snapshots.bsv servestarts an http server that expose an API + an interface to manipulate BSV. Allow to list files, explore history, download and upload files...