On this page
Overview
This command-line backup tool runs on Linux, macOS, Windows, and several BSD systems. It encrypts data before storage, removes duplicate content, and records snapshots. Repositories can live in a local directory, over SFTP, in S3-compatible storage, or behind many services supported through rclone.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Build encryption and deduplication into every backup
restic assumes the storage location is untrusted and protects confidentiality and integrity with cryptography. It deduplicates content before writing it, so later snapshots primarily consume space for newly added data.
Sources: [1]
Best fit
Use one scriptable CLI for workstation and server backups
It fits personal files and scheduled server backups that need a scriptable command-line workflow. Native backends include local storage, SFTP, REST, Amazon S3, OpenStack Swift, Backblaze B2, Azure Blob Storage, and Google Cloud Storage, with more available through rclone.
Sources: [1]
Before adoption
Plan for lost keys and restore-side overwrites
Losing the repository password makes the backup irrecoverable. Restore operations overwrite existing files at the target by default, so test with a separate directory first. Restoring symbolic links and complete security descriptors on Windows also requires additional privileges.
Official sources
- [1]restic v0.19.1 README(2026-10-04)
- [2]restic v0.19.1 introduction and quickstart(2026-10-04)
- [3]restic v0.19.1 restore documentation(2026-10-04)
- [4]restic v0.19.1 encryption documentation(2026-10-04)
- [5]restic v0.19.1 release(2026-10-04)
- [6]restic GitHub repository metadata(2026-10-04)
- [7]restic v0.19.1 license(2026-10-04)
Supplemental curator note
Evaluate more than backup speed: include key custody, periodic check runs, and restore drills into a separate directory. A repository on the same machine should not be the end of the backup design.
Try it in 3 steps
- 1
Prepare a local test file
Confirm that restic is available, then create an isolated directory and a small file that cannot affect real data.
restic version && mkdir -p restic-demo/source restic-demo/repository && printf '%s\n' 'restic local restore check' > restic-demo/source/example.txt && cd restic-demo - 2
Initialize an encrypted repository and back up the file
Use
read -rsin bash or zsh to enter a temporary password without displaying it, initialize the local repository, and save the test file. Keep the password for the rest of this test.printf 'Enter a temporary repository password: ' && read -rs RESTIC_DEMO_PASSWORD && printf '\n' && export RESTIC_PASSWORD="$RESTIC_DEMO_PASSWORD" && restic -r repository init && restic -r repository backup source - 3
Restore the snapshot and compare the file
List the history, restore the newest snapshot into a separate directory, and verify that the restored content matches.
restic -r repository snapshots && restic -r repository restore latest --target restored && restored_file="$(find restored -name example.txt -type f -print -quit)" && test -n "$restored_file" && diff source/example.txt "$restored_file"
Growth
Growth trends · Last 30 days
36,402 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 16
- Open PRs
- 137
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- go
- restic
- backup
- deduplication
- dedupe
- secure-by-default
- Stars
- 36,402
- Forks
- 1,902
- Watchers
- 239
- Open issues
- 477
- Contributors
- 398
- Owner type
- Organization
- Primary language
- Go
- License
- BSD-2-Clause
- Repository last updated
- Oct 1, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- cert-manager14,104 Stars
2 shared tag(s) · Same language
automate TLS certificate issuance and renewal inside Kubernetes while using ACME, Vault, and other issuers through shared resources
Go - Grype12,968 Stars
2 shared tag(s) · Same language
scan container images, filesystems, and SBOMs against vulnerability data and prioritize findings with EPSS, KEV, and VEX
Go - Tailscale37,129 Stars
3 shared tag(s) · Same language
Join devices to a WireGuard mesh with tailscaled/CLI while coordinating identity, NAT traversal, and policy through a managed control plane
Go - Ollama182,132 Stars
2 shared tag(s) · 2 shared category(s) · Same language
one local runtime for acquiring models, running inference, and serving applications
Go - fzf83,368 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Fuzzy-select candidates from stdin or a file walker and extend the terminal finder with previews, shell actions, and remote control
Go - Lazygit82,880 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Bring staging, commits, branches, rebases, worktrees, and reflog operations into a keyboard-driven terminal Git UI
Go
Report incorrect information
Tell us if any listing information is incorrect or outdated.