Skip to content

Jarvie8176/tools

Repository files navigation

tools

Backup verification & rclone migration tools — content-addressed, EXIF-aware, with persisted SQLite checksum caches.

CI CodeQL Security License: Apache 2.0 Python 3.9+

A small, opinionated personal toolchain for moving and verifying file archives where the content matters more than the path: file renames between source and destination should not break a verification, and recomputing checksums for terabytes of data on every run is not acceptable.

Both tools share a common ethos:

  • Content-addressed. Match by hash, not by filename. A camera-style IMG_0050.jpg on the SD card and a 2026-03-28_18-24-59_IMG_0050.jpg on the NAS are "the same file" iff their hashes agree.
  • Persisted SQLite caches. Hashes are written to a SQLite cache beside the data, invalidated by (size, mtime), and resumable across crashes / SIGKILL / mount drops.
  • Independent steps. No giant atomic operation that has to roll back. Each step is idempotent on re-run.

The toolchain

Tool What it does Path
backup-verification Verify SD-card contents against a NAS backup, with EXIF-aware comparison modes (smart / full / data-only) and multi-threaded SHA-256. backup-verification/
rclone-migrate Safer alternative to rclone move: split into copy → check → delete, content-addressed matching, persisted hash manifests, audit log, and a check-signature gate that refuses delete if src changed mid-flight. rclone-migrate/
cc-session Persistent tmux wrapper for Claude Code — keeps claude running across SSH disconnects, sleeps, and devices, so the browser-side "Remote Control" bridge can drop without losing the conversation. cc-session/

Each sub-project has its own README.md with a full reference; this top-level README is the umbrella entry point.

Quick start

rclone-migrate — one-line install (signed release)

curl -fsSL https://raw.githubusercontent.com/Jarvie8176/tools/main/rclone-migrate/scripts/install.sh | bash

The installer downloads the latest signed wheel from the GitHub Release page, verifies its SHA-256, and installs rmig (plus its rmig-* subcommands) via pipx. For the audited form, optional Sigstore verification, and uninstall steps, see rclone-migrate/README.md.

From source (contributors)

git clone https://github.com/Jarvie8176/tools.git
cd tools

# Pick a tool
cd backup-verification && poetry install         # SD ↔ NAS verifier
# or
cd rclone-migrate && pip install -e '.[dev]'     # rclone migration

Then read the per-tool README for command-line reference and configuration. rclone-migrate ships an interactive rmig init wizard that generates a working TOML in one pass.

Project conventions

These apply across both sub-projects.

  • Python: 3.9 minimum. CI tests Python 3.9 – 3.13.
  • Lint: ruff from repo root. Configured narrowly for high-signal bug rules (E9, F63, F7, F82) — see ruff.toml.
  • Tests: pytest + pytest-cov with branch coverage, threshold enforced per sub-project.
  • CI: every PR runs the matrix above plus CodeQL, bandit, gitleaks, trivy fs, pip-audit, zizmor, and actionlint. See .github/workflows/.
  • Working with AI coding agents: see AGENTS.md for the conventions agents are expected to follow.
  • Reporting a vulnerability: see SECURITY.md.

License

Apache License 2.0 — see LICENSE.

Copyright 2026 Jarvie8176.

About

Backup verification & rclone migration tools — content-addressed, EXIF-aware, with persisted SQLite checksum caches

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors