What is gitdr
gitdr backs up GitHub and GitLab organizations to object storage you own, and checks the bucket is write-once (WORM) before it writes a thing. Deleted repo, popped account, ransomware, and your history is still sitting somewhere they can’t reach.
It’s a single static Linux binary that runs as a one-shot job. No agents, no daemon, no control plane, no phone-home. Point it at a source and a bucket, it does five things in order and exits non-zero if any of them fail:
- Enumerate every repo in the org over read-only source scopes.
- Verify WORM on the destination. No lock means a loud warning, or a hard stop with
--require-worm. - Bundle each repo, full mirror clone plus LFS, SHA-256 streamed.
- Upload create-only with a retain-until date. Nothing ever overwrites.
- Sign an ed25519 manifest of the whole run.
gitdr restore gets your repos back. gitdr verify re-downloads everything and checks
the signature and every hash, so you find out backups are intact before you need them.
Where to next
Section titled “Where to next”- Quickstart, zero to a verified immutable backup in about 10 minutes.
- Install and verify, get it, and prove what you downloaded.
- WORM buckets, make the destination immutable, per provider.
- Restore runbook, how to get repos back when it matters.
- Security, the design stance and how to report a vulnerability.
- Source on GitHub, AGPL-3.0, read it end to end.
What it never does
Section titled “What it never does”The storage layer has no delete, remove, or overwrite method anywhere in the codebase. Backups are append-only by construction. There is no telemetry of any kind. Credentials come from env or your cloud’s default credential chain, never from code, and are redacted in every log line.