reflect

rsync's little brother.

Make this tree look like that tree. Over SSH, honoring .gitignore, with a library when you want the pipes.

$ curl -fsSL https://reflect.ballast.dev/install.sh | sh

Same chore, less ceremony

The delta trick, without the family daemon.

  • Familiar

    reflect src/ dest/ and host:path over SSH. Trailing slash means what it always meant.

  • Honors .gitignore

    Build caches and .git/ stay home by default. --no-ignore when you really want them.

  • Delta transfer

    Only the changed blocks cross the wire, compressed with zstd or lz4.

  • A library, too

    libreflect and reflect.h give you the engine without shelling out.

~/Projects

          

Benchmarks

Faster than the old boat.

Wall time against rsync on the same trees. Shorter is better.

reflect rsync

Drop anchor

Install in one line.

$ curl -fsSL https://reflect.ballast.dev/install.sh | sh
  • Detects Linux or macOS, x86_64 or arm64, and checks the SHA-256 before installing.
  • Installs to ~/.local/bin, or /usr/local/bin as root. Override with PREFIX=/some/bin.
  • Pin a version with REFLECT_VERSION=0.0.6.
  • Windows: run the Linux build inside WSL2.

All builds, packages and checksums