4 changed files with 54 additions and 6 deletions
@ -1,3 +1,52 @@ |
|||||
# BSV - Backup, Synchronization, Versioning |
# BSV - Backup, Synchronization, Versioning |
||||
|
|
||||
Readme to be done. |
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 map` list 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 log` show the history of snapshots. |
||||
|
- [ ] `bsv show <digest>` show the object `digest`. |
||||
|
- [ ] `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 snapshot` capture 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 by `snapshot`. |
||||
|
- [x] Simple CAS implementation (it's OK if it's naïve). |
||||
|
- [x] Content-based chunking to store files. |
||||
|
|
||||
|
### Later |
||||
|
|
||||
|
- [ ] `bsv fetch [<name>]` fetch latest metadata from known repositories. |
||||
|
- [ ] `bsv sync` similar to `snapshot` + `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 watch` starts a daemon that watch changes in mapped directories and automatically create snapshots. |
||||
|
- [ ] `bsv serve` starts an http server that expose an API + an interface to manipulate BSV. Allow to list files, explore history, download and upload files... |
||||
|
|||||
Loading…
Reference in new issue