Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is restic?
restic is a free, open-source backup program distributed as a single executable. It backs up files from Linux, BSD, macOS, and Windows to many storage targets, including self-hosted and online services, without requiring a server or complex setup. Its core design goals are efficiency, security, and verifiability: it transfers only the parts of files that changed, uses cryptography throughout, and lets you confirm that backups can actually be restored.
What that means in practice
- Single binary: No server daemon or database to install and maintain. You download the executable, point it at a repository, and run it.
- Deduplication: Because it stores only changed parts of files, repeated backups of large, slowly changing datasets tend to be fast and space-efficient.
- Encryption by default: Data in the repository is encrypted, so the storage provider does not need to be trusted with plaintext.
- Restore verification: You can check that repository data is intact and restorable, rather than assuming a successful backup job means recoverable files.
- Repository compatibility: The project treats repository and data structures as a public API and follows Semantic Versioning. Within a major version, repositories are intended to remain readable; the project also aims for backward compatibility with earlier versions.
Who it suits
A practical fit if you want scriptable, storage-agnostic backups for servers, workstations, or personal machines, and you are comfortable running commands or wiring it into cron/systemd timers. It is less of a fit if you want a graphical, set-and-forget consumer backup app with built-in scheduling and support.
A concrete scenario
Suppose you run a small Linux server with a large media or document directory. You install the restic binary, initialize an encrypted repository on a remote storage service, and schedule a nightly restic backup. Each run uploads only new or changed data, and a periodic restic check gives you evidence the repository is healthy.
Next step
Read the Quickstart and user manual on restic to confirm your operating system and storage target are supported, then test a backup and restore with a small directory before trusting it with important data. For comparisons, see GitHub project pages for alternative tools such as Borg or Kopia.
How do I install restic on my operating system?
Install restic by downloading a single executable for your platform — there is no server, package dependency chain or daemon to set up. The official instructions live on the project's Installation page in the user manual, and the native binaries are published on the GitHub download page. Both are reachable from restic.
H3 What "install" actually means here Because restic ships as one self-contained binary, installation is mostly about putting that file somewhere your shell can find it and making it executable. Typical routes:
- Download the release binary for your OS and architecture, then move it into a directory on your
PATH(for example/usr/local/binon Linux/macOS) and mark it executable. - Use your system's package manager if a restic package is available for your distribution — convenient for updates, but the packaged version may lag behind the latest release.
- Build from source with a Go toolchain if you need a specific version or platform; the contribution guidelines linked from the project page cover the build workflow.
H3 Per-platform notes
- Linux and BSD: the binary route is the most predictable; confirm your architecture (amd64, arm64, etc.) before downloading.
- macOS: the binary works, but Gatekeeper may require you to allow the downloaded file before first run.
- Windows: grab the
.exebuild and place it in a folder you add toPATH, or call it by full path.
H3 A quick verification step
After installing, run the version check from a terminal to confirm the binary is on your PATH and executes. Then point restic at a test directory and a throwaway repository to confirm it can initialise and back up before you rely on it for real data.
H3 Choosing between methods
| Method | Best for | Trade-off |
|---|---|---|
| Release binary | Most users; any OS | You manage updates yourself |
| Package manager | Servers with existing update routines | Version may trail upstream |
| Build from source | Unusual platforms, specific commits | Needs a Go toolchain and more steps |
If you are unsure, start with the release binary — it matches the documented quickstart most closely and avoids version drift from third-party packaging.
How does restic ensure my backups are secure?
restic protects backups through cryptography applied end to end, not just at the storage layer. The project describes it as using cryptography "in every part of the process," so the security properties travel with the data rather than depending on the server or cloud provider you choose.
What that means in practice
- Data is encrypted before it leaves your machine. Because restic is a single executable with no server component, the backup client does the cryptographic work locally. A self-hosted target, an online service, or a plain external drive only ever holds encrypted data.
- Your password is the key to your data. The practical consequence: whoever controls the repository cannot read its contents, but if you lose the password, no provider can recover your files for you. Treat password storage as part of the backup plan.
- Storage providers are interchangeable. Since encryption is handled by restic rather than the backend, the security model does not change when you switch from one storage type to another.
- Integrity is verifiable. restic is described as letting you confirm that files can actually be restored, which matters because an untested backup is only a hope. Schedule periodic restore checks rather than assuming success.
A realistic scenario
Suppose you back up a laptop to a cheap object-storage bucket and also to an external disk. With restic, both copies are encrypted with the same client-side scheme, so a breach at the storage vendor exposes ciphertext, not documents. The trade-off is operational: you own key management, and deduplication means the repository is not a browsable folder of files — you need restic itself to read it.
Where to go next
Read the user manual linked from the project site for repository setup, password handling and the check/restore commands, and compare the approach with alternatives such as BorgBackup if you prefer a different client-side encryption design. For installation options, the manual's installation page and the GitHub download page are the starting points.
Which storage backends does restic support for backups?
restic supports a wide range of storage backends, both local and remote, so you can store backups almost anywhere. The official site groups them as “self-hosted and online services,” and the exact list is maintained in the user manual's installation and backend documentation.
Common backend categories include:
- Local filesystem — an external drive, NAS mount, or another directory on the same machine.
- Self-hosted servers — for example SFTP over SSH, REST server, or a WebDAV endpoint.
- Object storage — S3-compatible services, MinIO, Backblaze B2, Google Cloud Storage, Azure Blob Storage, and OpenStack Swift.
- Cloud file storage — services such as rclone, which itself bridges to many providers.
- Specialized options — restic also documents backends like rclone and a REST server for custom setups.
The practical distinction is not just where data lives, but how restic reaches it:
| Backend type | Typical use | Trade-off |
|---|---|---|
| Local disk / NAS | Fast restores, simple setup | No off-site protection unless replicated |
| SFTP / REST / WebDAV | Self-hosted server or VPS | You manage the server and its security |
| S3-compatible / B2 / GCS / Azure / Swift | Off-site cloud storage | Ongoing storage and egress costs |
| rclone | Reuse an existing cloud account | Extra layer to configure and maintain |
Because restic is a single executable and encrypts data before upload, the backend only sees encrypted blobs. That means you can mix backends, for example a local repository for quick restores and a cloud repository for disaster recovery.
If you are choosing a backend, start with the manual's backend list and pick based on restore speed, off-site requirements, and cost. For a concrete scenario: a small team might use SFTP to a VPS for daily backups and rclone to a cheap object store for an off-site copy, testing restores from both. The official project pages are restic and its GitHub repository.
How can I restore my files from a restic backup?
You restore with restic restore: point it at the repository, choose the snapshot, and name a target directory. The snapshot's file tree is written into that directory, so you can inspect the result before replacing anything live.
H3 Practical workflow
- List snapshots to find what you want:
restic snapshots(add--hostor--tagto filter if you back up several machines). - Restore a whole snapshot:
restic restore latest --target /tmp/restore—latestis shorthand for the most recent snapshot; use a snapshot ID instead if you need a specific point in time. - Restore only part of it: add
--include /home/you/Documents(or--exclude) to limit what is written. - Verify before overwriting: restore to a scratch directory, compare, then copy back or point your application at the restored path.
H3 Choosing between restore options
| Goal | Command approach | Trade-off |
|---|---|---|
| Get everything back after a failure | restic restore <snapshot> --target <dir> |
Simplest, but writes the full tree |
| Recover one file or folder | Same command plus --include <path> |
Faster and less disk use, but you must know the exact path |
| Browse before deciding | restic mount <mountpoint> (FUSE) |
Read-only view of all snapshots; needs FUSE support and is slower for bulk copying |
| Pull a single file out of a stream | restic dump <snapshot> <path> |
No target directory needed; best for piping to another tool |
H3 Things that trip people up
- Restoring into a non-empty directory can overwrite files. Use
--targetwith a fresh directory unless you intend to overwrite. - Restores run as the user invoking restic; ownership and permissions from the snapshot are applied where the platform allows it.
- You need the repository password and access to the storage backend. If the backend is remote, have those credentials ready before you start.
- Keep a copy of the repository password somewhere separate from the backup itself — without it, the data is unreadable by design.
H3 A concrete scenario
Your laptop drive dies. You reinstall the OS, install restic, reconnect the same backend, and run restic snapshots to see last night's snapshot. You restore to /tmp/restore first, confirm your documents and config files look right, then copy them into place. If you only need one project folder, you add --include and skip the rest.
Next step: read the restore section of the user manual at restic and check the exact flags for your version, since options have been added over time.
How does restic handle version compatibility for backups?
restic treats its repository format as a "Public API" and follows Semantic Versioning to define what stays compatible. In practice: once version 1.0.0 is released, all repositories within the same major version are guaranteed to remain readable and restorable, so you can upgrade restic without losing access to older backups. The project also states it strives to be fully backward compatible with all prior versions.
Before 1.0.0, the guarantee is softer. During initial development, maintainers do their utmost to preserve backward compatibility and stability, but breaking changes are possible without a major-version bump.
A useful way to think about the trade-off:
| Situation | What compatibility means |
|---|---|
| Same major version (1.x, after 1.0.0) | Repositories remain readable and restorable |
| Across a major-version increase | Compatibility is not guaranteed |
| Pre-1.0.0 versions | Best effort only; breaking changes possible |
Practical next step: before upgrading restic, check the release notes for the version you are moving to and confirm whether it crosses a major version. If it does, plan to keep the older binary available until you have verified a restore from your existing repository. For a concrete scenario: a user running restic 1.x on Linux, BSD, Mac or Windows can generally upgrade within the 1.x line and still restore backups made by earlier 1.x releases, which matters most when you need an old snapshot during an emergency.
For installation and version details, see the official project at restic and its download page on GitHub.
User reviews (0)