restic

restic · restic.restic

Fast, secure, efficient backup program

restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).

winget install --id restic.restic --exact --source winget

Latest 0.19.0

Release Notes

Changelog for restic 0.19.0 (2026-06-09) The following sections list the changes in restic 0.19.0 relevant to restic users. The changes are ordered by importance. Summary

  • Fix #2034: Support serving a restic mount of a Windows system via Samba
  • Fix #4447: Use mode 0700 for repository directories created over SFTP
  • Fix #4467: Exit with code 3 when some backup source paths do not exist
  • Fix #4759: Error out when environment variables hold invalid values
  • Fix #5233: Return exit code 3 when failing to remove snapshots
  • Fix #5258: Exit with code 130 on SIGINT
  • Fix #5280: Reject impossible find time bounds immediately
  • Fix #5280: Make find --pack list blobs for tree packs
  • Fix #5354: Allow rclone and sftp backends when running in background
  • Fix #5427: Correctly restore ACL inheritance state on Windows
  • Fix #5477: Password prompt was sometimes not shown for backup -v
  • Fix #5487: Mark repository files read-only when using the SFTP backend
  • Fix #5586: Correctly handle snapshots --group-by with --latest
  • Fix #5595: Avoid spurious chmod errors on certain file backends
  • Fix #5683: Prevent backup --stdin-from-command from hanging
  • Fix #5757: Respect --user and --host in key passwd
  • Fix #21820: Correct handling of duplicate index entries
  • Fix #21820: Correctly handle pack files missing from the index
  • Chg #5293: Prune small packfiles more aggressively
  • Chg #5767: Prevent excluding paths explicitly passed to backup
  • Chg #21791: Update dependencies and require Go 1.25 or newer
  • Enh #3326: Limit check to snapshots selected by filters
  • Enh #3572: Support restoring ownership by name on UNIX systems
  • Enh #3738: Optional GitHub token for self-update API requests
  • Enh #4278: Support include filters in the rewrite command
  • Enh #4728: Support zstd compression levels fastest and better
  • Enh #4868: Include repository ID in the filesystem name used by mount
  • Enh #5175: Add status counters to copy in verbose text output
  • Enh #5352: Support excluding cloud-backed files on macOS
  • Enh #5383: Reduce progress bar refresh rates to decrease energy usage
  • Enh #5424: Enable Windows filesystem privileges before file access
  • Enh #5440: Make --host override environment variable RESTIC_HOST
  • Enh #5448: Support configuring nice and ionice in the Docker image
  • Enh #5453: Copy multiple snapshots in batches
  • Enh #5523: Add Open Container Initiative labels to release Docker image
  • Enh #5531: Reduce Azure storage costs by optimizing uploads
  • Enh #5562: Rewrite only changed status lines each frame
  • Enh #5588: Show timezone context in snapshots output
  • Enh #5610: Reduce check, copy, diff and stats memory usage
  • Enh #5689: Show more detailed progress for stats
  • Enh #5713: Significantly speed up index loading
  • Enh #5718: Stricter and earlier validation of the mount point Details
  • Bugfix #2034: Support serving a restic mount of a Windows system via Samba A repository mounted using restic mount on a POSIX system could not use Samba to serve files from backups of Windows systems, while backups of non-Windows systems could be served successfully. This has now been fixed. #2034 #4382 #21784
  • Bugfix #4447: Use mode 0700 for repository directories created over SFTP When creating a repository over SFTP, restic created the repository directories with the SFTP server's default permissions, often 0755, rather than the 0700 permissions it uses for local repositories. Restic now creates these directories with 0700 permissions. #4447 #21817
  • Bugfix #4467: Exit with code 3 when some backup source paths do not exist Restic used to exit with code 0 when a top-level backup source path was missing, and exited with code 3 only when a child path under an existing source did not exist. Scripts that relied on the exit code could therefore treat an incomplete backup as success. Restic now exits with code 3 when any backup source path does not exist. #4467 #5347
  • Bugfix #4759: Error out when environment variables hold invalid values If the environment variables RESTIC_COMPRESSION, RESTIC_PACK_SIZE, or RESTIC_READ_CONCURRENCY could not be parsed, restic used to ignore them. Restic now fails with an error unless the same setting is overridden on the command line. #4759 #5592 #5700
  • Bugfix #5233: Return exit code 3 when failing to remove snapshots Previously, the forget command returned exit code 0 when it failed to remove one or more snapshots. This was misleading to scripts. The forget command now instead returns exit code 3 when failing to remove one or more snapshots. #5233 #5322
  • Bugfix #5258: Exit with code 130 on SIGINT Restic used to return exit code 1 on SIGINT. It now returns 130, the usual convention for a process stopped by Ctrl-C. #5258 #5363
  • Bugfix #5280: Reject impossible find time bounds immediately The find command now fails with an error when both --oldest and --newest are set and --oldest is later than --newest. #5280 #5310
  • Bugfix #5280: Make find --pack list blobs for tree packs The find --pack command now also reports blobs for packs that only contain tree blobs. #5280 #5664
  • Bugfix #5354: Allow rclone and sftp backends when running in background Previously, starting restic in the background could result in unexpected behavior when using the rclone or sftp backends. For example, restic -r rclone:./example --insecure-no-password init & could cause the calling bash shell to exit unexpectedly. This has now been fixed. #5354 #5358 #5493 #5494
  • Bugfix #5427: Correctly restore ACL inheritance state on Windows Since security descriptor backups were added in restic 0.17.0, Access Control Entry inheritance was not restored correctly on Windows; restored permissions were always marked as explicit (not inherited) even when they were inherited from a parent folder. The inheritance flags are now correctly applied when restoring the security descriptor, preserving the original permission structure. #5427 #5465
  • Bugfix #5477: Password prompt was sometimes not shown for backup -v The repository password prompt could be hidden when running the backup -v command. This has now been fixed. #5477 #5554
  • Bugfix #5487: Mark repository files read-only when using the SFTP backend Files created through the SFTP backend previously stayed writable. New files now get read-only permissions where the server supports chmod. #5487 #5497
  • Bugfix #5586: Correctly handle snapshots --group-by with --latest For the snapshots command, --latest did not interact correctly with a non-default --group-by value. This combination now behaves as intended. #5586 #5601
  • Bugfix #5595: Avoid spurious chmod errors on certain file backends On filesystems that do not support chmod (for example CIFS or FUSE-mounted WebDAV), restic since version 0.18.0 failed to remove stale locks, throwing the error chmod ...: operation not supported. This has now been fixed. #5595 #5596
  • Bugfix #5683: Prevent backup --stdin-from-command from hanging When using --stdin-from-command, the backup command could hang until manually cancelled if the backup stopped before all subprocess output was consumed, for example after a failed upload to the repository. This has now been fixed. #5683 #21829
  • Bugfix #5757: Respect --user and --host in key passwd The key passwd command previously ignored the --user and --host options and always stored the new key with the current user and host name. These options are now honored. #5757 #21781
  • Bugfix #21820: Correct handling of duplicate index entries Before restic 0.10.0, a bug could, in very rare cases, split information about a pack file across multiple index files. Since restic 0.17.0, any operation that rewrites the index (like prune or repair packs) could lose part of that information, resulting in errors in later check or prune runs. This can be fixed by running repair packs, and only repositories using repository format version 1 might be affected. Split pack index entries are no longer lost during index rewrites. The check command now reports these cases as errors that can be fixed using the repair packs command. On older restic versions, running repair index twice also fixes the problem. #21820 #21828
  • Bugfix #21820: Correctly handle pack files missing from the index The repair packs command was unable to salvage blobs from a pack file if the pack file was not contained in the index or the index entry was incomplete. The command now uses information from both the index and the pack file header. #21820 #21827
  • Change #5293: Prune small packfiles more aggressively The prune command now repacks more small packfiles by default. The option --repack-small is no longer needed and has been marked as deprecated. The --repack-smaller-than option can still be used to further control repacking of small pack files. #5293 #21803
  • Change #5767: Prevent excluding paths explicitly passed to backup When e.g. restic backup --exclude-if-present .git /home/user/data was run and /home/user/.git existed, restic excluded the data directory from the snapshot. The same applied to --exclude-caches or --one-file-system. Similarly, restic backup --exclude-larger-than 1M large-file.bin produced an empty snapshot when the file was larger than one megabyte. The backup command now tracks which files and directories were specified on the command line and does not apply excludes to those paths. Content inside a backed-up directory is still filtered by excludes as before. #5767 #21797
  • Change #21791: Update dependencies and require Go 1.25 or newer Dependencies have been updated. Building restic now requires Go 1.25 or newer. The Windows build with Go 1.26 was also fixed. #21791 #5619 #21796
  • Enhancement #3326: Limit check to snapshots selected by filters The check command can now restrict pack verification to snapshots chosen with the usual snapshot filters (--tag, --host, --path, or explicit snapshot IDs on the command line). #3326 #5469 #5644

Installer type: zip

Architecture Scope Download SHA256
x86 Download 5AB17C545FED2002E328BFB2816EFD01E64F9AD69FFAE38ADE014FC52AC6579D
x64 Download 6FA4219A70B1B5D1C429BB106A7F97F3D2A5AAB74494DB2E490B625EDC486D8F

Details

Homepage
https://github.com/restic/restic
License
BSD-2-Clause
Publisher
restic
Support
https://github.com/restic/restic/issues
Copyright
Copyright (c) 2014, Alexander Neumann <alexander@bumpern.de>
Moniker
restic

Tags

backupdedupededuplicationgoresticsecure-by-default

Older versions (12)

0.18.1
Architecture Scope Download SHA256
x86 Download C97028C921AD5ABCA07A826913585F216114E8F2BF463A112CE116C352D2C166
x64 Download 0C1A713440578CB400D2E76208FEB24F1B339426B075A21F73B6B2132692515D
0.18.0
Architecture Scope Download SHA256
x86 Download 057DA51ACCF774EA551D680239FA55C61613584BE0E960A2A5D0AB9018F6F585
x64 Download C90CFCD577FE3D60D2529021E76BD5637BDCD19D7FA84840A40FCBBF995902DE
0.17.3
Architecture Scope Download SHA256
x86 Download 045C160EF53D1C32D6C5CF60BC3805026BE807DDBFEA1D9DBC90E1C5FDF94776
x64 Download FCF5875DE5A995100E8A2ECAD5B0ADA86B47155796BECE87A425A251288C800F
0.17.2
Architecture Scope Download SHA256
x86 Download 7EC22DF3B0C71B04A3F41010780710688CC331C00F9A60EB2D667E123D6A0AC1
x64 Download C44B1A22975F42F0547AA905104A8EBAE43F51DB62FD347C293EBF246233A7D3
0.17.1
Architecture Scope Download SHA256
x86 Download B37D69CCA2FD086414C86BC0362791899C572549DCCF23264ABF48BD5B41B857
x64 Download 8CCA20660BD827552A96BD4B4ADE2EBAB1880CD068B43EEA5FB211F11A98AC60
0.17.0
Architecture Scope Download SHA256
x86 Download EC72C50BDD6B49A4A045EE92E471C01596640426AA4F5CDFDCE2C2A975A2913D
x64 Download 8578D2A63BBEDD34669ED4CD8B332FB3AECFD3480EA3EF6D0C692E6FC146CB3E
0.16.4
Architecture Scope Download SHA256
x64 Download 911a1b84f2100d2ac691c0bb28955fd2ab65e76cb2dbe651b21f6072a508e2be
0.16.2
Architecture Scope Download SHA256
x64 Download DE63F778F0650DB9C0C00C3772D7F87A6C21CA64E1249E55392ECBEB9BC352A3
0.16.1
Architecture Scope Download SHA256
x64 Download 6FAB3FA836659C85B97E7A8E514BDBB8D4DF186600212A7B5C36CAFFF7942E38
0.16.0
Architecture Scope Download SHA256
x64 Download 9EC893FC952F4E45307F8CD603B6DE2F396E1AD757AF6847C00A148257C0DFB7
0.15.2
Architecture Scope Download SHA256
x64 Download 37DBD859160BBB6D1B95E9F4A5C498C8DF386DB510950875C70328F688CB4E5D
0.15.1
Architecture Scope Download SHA256
x64 Download f05d3115ca5636a3a30f454f62c51746473121d40b9624dd28d84589b8e2eaf2