Skip to content

Releases: coldsofttech/BatchVault

Release list

v0.1.0

Choose a tag to compare

@coldsofttech coldsofttech released this 24 Oct 18:45
6519561

BatchVault 0.1.0

The first release of BatchVault: archive many files in one go, compress them, split them into volumes of a size you choose, and restore them later with checks at every step.

Install

pip install batchvault
pip install "batchvault[crypto]"    # adds encryption and signed manifests

Requires Python 3.11.4 or later. Docker images are available with and without 7-Zip, and there is a GitHub Action: uses: coldsofttech/BatchVault@v1.

Highlights

  • Archive and split. batchvault pack compresses files into numbered volumes (default 10 MB). batchvault unpack restores them from a manifest, a folder, any single volume or a list.
  • Two engines. A built-in engine that needs nothing installed (xz, gzip, bzip2 or no compression), and an optional 7-Zip engine.
  • Your folders are kept. Archives mirror your folder tree and unpack recreates it. Use --root DIR only if you want to change where paths start.
  • Safe by design. Every archive has a checksummed manifest. Restoring checks each volume and each restored file before anything lands in the output folder.
  • Smart compression. --level auto (the default) picks a level for each file from its type: none for video, photos and archives, stronger for text.
  • Sensible defaults. Level auto, volumes of 10 MB, no worker threads (--jobs 0) and three retries (--retries 3).

Commands

Command What it does
pack Archive files into volumes
unpack Restore files, recreating your folders
verify Check archives are complete and readable, optionally against the originals
inspect Describe archives: engine, format, level, sizes, volumes
list files / list archives Build a list of files to pack, or find existing archives
keygen, sign Create a signing key and sign a manifest
doctor Check your setup

Results use one consistent table (Source, Archive, Status, Details) with live progress and an ETA.

More features

  • --update skips unchanged files, --retries retries failures, --dry-run previews a run, and --include / --exclude filter files.
  • Optional encryption (AES-256-GCM) and Ed25519 signed manifests.
  • --delete-source removes originals only after the archive is proven good by a full restore check.
  • A batchvault.toml settings file, --notify webhooks, --json and --json-events output, and per-run log files.
  • A Python API (import batchvault as bv).

Safer by default

  • Archives are readable only by their owner on Linux and macOS.
  • unpack --max-output-size refuses archives that would expand beyond a size you choose.
  • Settings files found automatically cannot run programs, send data or delete files.
  • 7-Zip is never run from the current folder.

Good to know

  • Videos, photos and other already-compressed files cannot shrink further. --level auto skips the heavy work for them, and --format store splits them with no compression at all.
  • Passwords are never taken as command-line flags; use an environment variable or --password-file.
  • --password-file on pack only encrypts when --encrypt is also given.

Documentation

See the README and the guides in docs/ for the CLI, Python API, GitHub Action, Docker, configuration and compression.

Full changelog: https://github.com/coldsofttech/BatchVault/blob/main/CHANGELOG.md

What's Changed

New Contributors

Full Changelog: https://github.com/coldsofttech/BatchVault/commits/v0.1.0