zrepl - ZFS replication

Attention

zrepl as well as this documentation is still under active development. It is neither feature complete nor is there a stability guarantee on the configuration format. Use & test at your own risk ;)

Getting started

The 10 minutes tutorial setup gives you a first impression.

Main Features

  • Filesystem Replication
    • [x] Local & Remote
    • [x] Pull mode
    • [ ] Push mode
    • [x] Access control checks when pulling datasets
    • [x] Flexible mapping rules
    • [x] Bookmarks support
    • [ ] Feature-negotiation for
      • Resumable send & receive
      • Compressed send & receive
      • Raw encrypted send & receive (as soon as it is available)
  • Automatic snapshot creation
    • [x] Ensure fixed time interval between snapshots
  • Automatic snapshot pruning
    • [x] Age-based fading (grandfathering scheme)
  • Logging & Monitoring
    • Detailed & structured logging
      • human, logfmt and json formatting
      • stdout, syslog and TCP (+TLS client auth) outlets
    • Prometheus monitoring endpoint
  • Maintainable implementation in Go
    • [x] Cross platform
    • [x] Type safe & testable code

Contributing

We are happy about any help we can get!

  • Explore the codebase
    • These docs live in the docs/ subdirectory
  • Document any non-obvious / confusing / plain broken behavior you encounter when setting up zrepl for the first time
  • Check the Issues and Projects sections for things to do

Development Workflow

The GitHub repository is where all development happens. Make sure to read the Developer Documentation section and open new issues or pull requests there.