restic Release Notes

Follow

10 release notes curated from 1 source by the Releasebot Team. Last updated: Jul 18, 2026

Get this feed:
  • Jul 5, 2026
    • Date parsed from source:
      Jul 5, 2026
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.19.1

    restic releases 0.19.1 with a focused batch of bug fixes that improve mounting, backup reliability, snapshots output, JSON stats, and SFTP cleanup on Windows. It also restores expected snapshot grouping behavior and tightens error handling for inaccessible paths and mountpoints.

    Changelog for restic 0.19.1 (2026-07-05)

    The following sections list the changes in restic 0.19.1 relevant to restic users. The changes are ordered by importance.

    Summary

    • Fix #5234: Prevent mounting over the repository directory
    • Fix #5667: Skip inaccessible backup source paths
    • Fix #5722: Update mount latest symlink after snapshot reload
    • Fix #21866: Hide stats progress bar in JSON mode
    • Fix #21869: Restore old behavior of snapshots --latest <n> without --group-by
    • Fix #21876: Show timezone location in snapshots output
    • Fix #21879: Prevent crash in mountpoint validation if mountpoint is inaccessible
    • Fix #21895: Remove read-only files via the SFTP backend on Windows servers
    • Fix #21899: Make backup respect excludes for duplicate directory entries

    Details

    Bugfix #5234: Prevent mounting over the repository directory

    Using a local repository directory as the mount target — or a path that contains it, or that it contains — caused the FUSE server to read its own backend files through the new mount, deadlocking the kernel and requiring a long reboot to recover.

    Restic now resolves both paths and refuses any such overlap with a clear error before mounting.

    #5234 #5348

    Bugfix #5667: Skip inaccessible backup source paths

    The backup command only skipped source paths that did not exist. A path that could not be accessed for another reason, such as a malformed path on Windows, was kept and produced an empty snapshot. Restic now skips any such path and aborts if none remain.

    #5667 #21852

    Bugfix #5722: Update mount latest symlink after snapshot reload

    When restic mount was kept running while new snapshots were created, the new snapshots appeared in the mountpoint, but the latest symlink could still point to the previously latest snapshot. Restic now invalidates the cached snapshot directory entries after a snapshot reload so that latest points to the newest snapshot.

    #5722 #21873

    Bugfix #21866: Hide stats progress bar in JSON mode

    Since restic 0.19.0, the stats command shows a progress bar. This progress bar was unintentionally displayed also when using the --json option, mixing regular text output with JSON. This is now fixed.

    #21866 #21871

    Bugfix #21869: Restore old behavior of snapshots --latest <n> without --group-by

    Restic 0.19.0 accidentally changed the behavior of snapshots --latest <n> to no longer group snapshots by host and paths by default.
    The snapshots --latest <n> command now again uses the old behavior of grouping by host and paths when --group-by is not specified. However, when specifying --group-by the output is still grouped as requested, as in restic 0.19.0.

    #21869 #21875

    Bugfix #21876: Show timezone location in snapshots output

    With restic 0.19.0, the snapshots command printed the current timezone when listing snapshots. However, that timezone label might change during the year, for example with daylight saving time. Restic now prints a more consistent and shorter version of the text.

    #21876 https://forum.restic.net/t/possible-bug-in-timezone-naming/10867

    Bugfix #21879: Prevent crash in mountpoint validation if mountpoint is inaccessible

    Since restic 0.19.0, the mount command validates a mountpoint before loading the repository. If restic was unable to stat the mountpoint, this would result in a crash. This has now been fixed to correctly return an error instead.

    #21879

    Bugfix #21895: Remove read-only files via the SFTP backend on Windows servers

    Since restic 0.19.0, repository files on the SFTP backend are marked read-only after save. On Windows SFTP servers, removing them failed with a permission error. The SFTP backend now clears the read-only flag before removing the file.

    #21895 #21897

    Bugfix #21899: Make backup respect excludes for duplicate directory entries

    Since restic 0.19.0, backing up a directory with duplicate directory entries always produced "Warning: at least one source file could not be read", even when those files were excluded. This has now been fixed.

    #21899 #21900

    Original source
  • Jun 9, 2026
    • Date parsed from source:
      Jun 9, 2026
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.19.0

    restic 0.19.0 brings faster, safer backups and restores with major bug fixes, stricter validation, better Windows and SFTP handling, improved progress output, lower memory use, and new features like ownership-by-name restores, include filters in rewrite, and faster index loading.

    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 <tree-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

    Enhancement #3572: Support restoring ownership by name on UNIX systems

    The restore command used to restore file ownership on UNIX systems by UID and GID. It now supports restoring ownership by user and group name with --ownership-by-name, so that snapshots can be restored on systems where numeric IDs do not match those on the backup host.

    Note: POSIX ACLs are still restored by numeric value; this change does not add ACL-by-name support.

    #3572 #5449

    Enhancement #3738: Optional GitHub token for self-update API requests

    The self-update command used only unauthenticated GitHub API requests when checking for releases. Shared IP addresses could hit the GitHub rate limit, resulting in a 403 Forbidden error and preventing updates.

    Unauthenticated requests remain the default, but authenticated requests are now possible. Set the environment variable GITHUB_ACCESS_TOKEN to a GitHub personal access token to avoid rate-limit failures.

    #3738 #5568

    Enhancement #4278: Support include filters in the rewrite command

    The rewrite command now accepts the same include filter options as the restore command (--include, --include-file, --iinclude, --iinclude-file, and short -i). Include and exclude filter options are mutually exclusive.

    #4278 #5191

    Enhancement #4728: Support zstd compression levels fastest and better

    Restic now supports the zstd compression modes fastest and better. Set the environment variable RESTIC_COMPRESSION to fastest or better, or pass the same values with the --compression option.

    #4728 #5321

    Enhancement #4868: Include repository ID in the filesystem name used by mount

    The filesystem exposed by the mount command now includes the repository ID in its name. The ID is printed when opening a repository or can be read with restic cat config.

    $ df ./test-mount/
    Filesystem 1K-blocks Used Available Use% Mounted on
    restic:d3b07384d1 0 0 0 - /mnt/my-restic-repo

    #4868 #5243

    Enhancement #5175: Add status counters to copy in verbose text output

    The copy command now prints additional counters in text mode when --verbose is set: blobs to copy, their on-disk size, and the number of pack files read from the source repository.

    #5175 #5319

    Enhancement #5352: Support excluding cloud-backed files on macOS

    Previously, restic treated cloud-backed files (such as files stored on iCloud) like normal local files, forcing a full download of placeholders and other "meant to be cloud only" content during backups.

    The backup command now supports --exclude-cloud-files (previously only available on Windows) to skip those files on supported macOS versions. From Sonoma (macOS 14.0) onward the option can prevent unwanted downloads. Older macOS versions will still download the files during a backup run.

    #5352 #5370

    Enhancement #5383: Reduce progress bar refresh rates to decrease energy usage

    Progress bars were previously updated at 60 frames per second, which could cause high CPU or GPU usage in some terminal emulators.

    The refresh rate is now 10 FPS to conserve energy. For some terminal emulators, the lower rate is also necessary to allow selecting text in the terminal.

    #5383 #5551 #5626

    Enhancement #5424: Enable Windows filesystem privileges before file access

    Restic used to enable some Windows filesystem privileges only while reading or writing security descriptors. Extended attributes could therefore be read before enabling the backup privilege, possibly resulting in missed data or errors.

    Restic now enables the relevant filesystem privileges before any file access.

    #5424

    Enhancement #5440: Make --host override environment variable RESTIC_HOST

    Previously, when the environment variable RESTIC_HOST was set, snapshot listings and other operations were always filtered to that host.

    Passing --host as an empty string (--host="" or --host=) now overrides RESTIC_HOST and shows snapshots from all hosts.

    The same override applies to other commands that support snapshot filters, including snapshots, forget, find, stats, copy, tag, repair snapshots, rewrite, mount, restore, dump, and ls.

    #5440 #5541

    Enhancement #5448: Support configuring nice and ionice in the Docker image

    The container entrypoint now reads optional scheduling hints from the environment:
    The environment variable NICE sets the process nice value (see man nice).
    The environment variable IONICE_CLASS selects the I/O scheduling class (see man ionice). Real-time classes need the SYS_NICE capability added to the container.
    The environment variable IONICE_PRIORITY sets the priority within IONICE_CLASS and has no effect unless IONICE_CLASS is set; it defaults to 4 (neutral priority).

    For further details, please see: https://restic.readthedocs.io/en/stable/020_installation.html#docker-container

    #5448

    Enhancement #5453: Copy multiple snapshots in batches

    The copy command used to copy snapshots one at a time, even when doing so produced pack files smaller than the target pack size. This led to many small files when copying small incremental snapshots.

    The copy command now copies multiple snapshots together so that small pack files are avoided where possible.

    #5453 #5472

    Enhancement #5523: Add Open Container Initiative labels to release Docker image

    The release Docker image now includes OCI-style image annotation labels, which helps external tooling identify the image.

    #5523

    Enhancement #5531: Reduce Azure storage costs by optimizing uploads

    Restic previously used Azure PutBlock and PutBlockList for every upload, which cost two storage transactions per file and roughly doubled transaction charges for repositories with many pack files.

    Files up to 256 MiB now use PutBlob, requiring only a single transaction per file and cutting typical transaction costs by about half. Larger blobs still use block uploads as required by Azure.

    #5531 #5544

    Enhancement #5562: Rewrite only changed status lines each frame

    The status bar rewrote every line on each frame whenever any content changed, which made selecting text impossible in some terminal emulators even when most lines were unchanged.

    Now only lines that actually change are rewritten on each update.

    #5562 #5648

    Enhancement #5588: Show timezone context in snapshots output

    The snapshots command now prints which timezone is used for displayed timestamps. Snapshots may have been created in different timezones but are shown in the local timezone, so a footer line (for example, timestamps shown in CET) clarifies the display context when comparing snapshots from several sources.

    #5588

    Enhancement #5610: Reduce check, copy, diff and stats memory usage

    The check, copy, diff and stats commands now use less memory when handling large snapshots.

    #5610

    Enhancement #5689: Show more detailed progress for stats

    The stats command used to show progress only while loading the index. During the scan it printed only scanning... with no further updates. It now reports how many snapshots, files, and blobs have been processed so far.

    #5689 #5705

    Enhancement #5713: Significantly speed up index loading

    Loading the index for a large repository is now significantly faster. Also, the mount command now loads the index once at startup and then only loads new index files as they appear. It also loads snapshots before printing that the repository is being served.

    #5713 #5720

    Enhancement #5718: Stricter and earlier validation of the mount point

    The mount command previously accepted invalid mount points, resulting in an error after loading the repository. The specified mount point must now refer to a directory that the current user can access and write to, and this check is performed before opening the repository.

    #5718

    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from restic and hundreds of other software products.

    Create account
  • Sep 21, 2025
    • Date parsed from source:
      Sep 21, 2025
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.18.1

    restic releases 0.18.1 with bug fixes that improve backup, forget, check, and repository handling, including better stdin filename support, smarter retry behavior, and fewer false errors on unsupported filesystems.

    Changelog for restic 0.18.1 (2025-09-21)

    The following sections list the changes in restic 0.18.1 relevant to restic users. The changes are ordered by importance.

    Summary

    • Fix #5324: Correctly handle backup --stdin-filename with directory paths
    • Fix #5325: Accept RESTIC_HOST environment variable in forget command
    • Fix #5342: Ignore "chmod not supported" errors when writing files
    • Fix #5344: Ignore EOPNOTSUPP errors for extended attributes
    • Fix #5421: Fix rare crash if directory is removed during backup
    • Fix #5429: Stop retrying uploads when rest-server runs out of space
    • Fix #5467: Improve handling of download retries in check command

    Details

    Bugfix #5324: Correctly handle backup --stdin-filename with directory paths

    In restic 0.18.0, the backup command failed if a filename that includes at least a directory was passed to --stdin-filename. For example, --stdin-filename /foo/bar resulted in the following error:

    Fatal: unable to save snapshot: open /foo: no such file or directory
    

    This has now been fixed.

    #5324 #5356

    Bugfix #5325: Accept RESTIC_HOST environment variable in forget command

    The forget command did not use the host name from the RESTIC_HOST environment variable when filtering snapshots. This has now been fixed.

    #5325 #5327

    Bugfix #5342: Ignore "chmod not supported" errors when writing files

    Restic 0.18.0 introduced a bug that caused chmod xxx: operation not supported errors to appear when writing to a local file repository that did not support chmod (like CIFS or WebDAV mounted via FUSE). Restic now ignores those errors.

    #5342

    Bugfix #5344: Ignore EOPNOTSUPP errors for extended attributes

    Restic 0.18.0 added extended attribute support for NetBSD 10+, but not all NetBSD filesystems support extended attributes. Other BSD systems can likewise return EOPNOTSUPP, so restic now ignores these errors.

    #5344

    Bugfix #5421: Fix rare crash if directory is removed during backup

    In restic 0.18.0, the backup command could crash if a directory was removed between reading its metadata and listing its directory content. This has now been fixed.

    #5421

    Bugfix #5429: Stop retrying uploads when rest-server runs out of space

    When rest-server returns a 507 Insufficient Storage error, it indicates that no more storage capacity is available. Restic now correctly stops retrying uploads in this case.

    #5429 #5452

    Bugfix #5467: Improve handling of download retries in check command

    In very rare cases, the check command could unnecessarily report repository damage if the backend returned incomplete, corrupted data on the first download try which is afterwards resolved by a download retry.

    This could result in an error output like the following:

    Load(&lt;data/34567890ab&gt;, 33918928, 0) returned error, retrying after 871.35598ms: readFull: unexpected EOF
    Load(&lt;data/34567890ab&gt;, 33918928, 0) operation successful after 1 retries
    check successful on second attempt, original error pack 34567890ab[...] contains 6 errors: [blob 12345678[...]: decrypting blob &lt;data/12345678&gt; from 34567890 failed: ciphertext verification failed ...]
    [...]
    Fatal: repository contains errors
    

    This fix only applies to a very specific case where the log shows operation successful after 1 retries followed by a check successful on second attempt, original error that only reports ciphertext verification failed errors in the pack file. If any other errors are reported in the pack file, then the repository still has to be considered as damaged.

    Now, only the check result of the last download retry is reported as intended.

    #5467 #5495

    Original source
  • Mar 27, 2025
    • Date parsed from source:
      Mar 27, 2025
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.18.0

    restic releases 0.18.0 with stronger security, broader platform support, and smoother backup and restore workflows. It adds JSON output, new sorting and retry options, cloud file exclusions, and improved handling for Windows, Azure, S3, NetBSD, DragonFlyBSD, and rclone backends.

    Changelog for restic 0.18.0 (2025-03-27)

    The following sections list the changes in restic 0.18.0 relevant to restic users. The changes are ordered by importance.

    Summary

    • Sec #5291: Mitigate attack on content-defined chunking algorithm
    • Fix #1843: Correctly restore long filepaths' timestamp on old Windows
    • Fix #2165: Ignore disappeared backup source files
    • Fix #5153: Include root tree when searching using find --tree
    • Fix #5169: Prevent Windows VSS event log 8194 warnings for backup with fs snapshot
    • Fix #5212: Fix duplicate data handling in prune --max-unused
    • Fix #5249: Fix creation of oversized index by repair index --read-all-packs
    • Fix #5259: Fix rare crash in command output
    • Chg #4938: Update dependencies and require Go 1.23 or newer
    • Chg #5162: Promote feature flags
    • Enh #1378: Add JSON support to check command
    • Enh #2511: Support generating shell completions to stdout
    • Enh #3697: Allow excluding online-only cloud files (e.g. OneDrive)
    • Enh #4179: Add sort option to ls command
    • Enh #4433: Change default sort order for find output
    • Enh #4521: Add support for Microsoft Blob Storage access tiers
    • Enh #4942: Add snapshot summary statistics to rewritten snapshots
    • Enh #4948: Format exit errors as JSON when requested
    • Enh #4983: Add SLSA provenance to GHCR container images
    • Enh #5054: Enable compression for ZIP archives in dump command
    • Enh #5081: Add retry mechanism for loading repository config
    • Enh #5089: Allow including/excluding extended file attributes during restore
    • Enh #5092: Show count of deleted files and directories during restore
    • Enh #5109: Make small pack size configurable for prune
    • Enh #5119: Add start and end timestamps to backup JSON output
    • Enh #5131: Add DragonFlyBSD support
    • Enh #5137: Make tag command print which snapshots were modified
    • Enh #5141: Provide clear error message if AZURE_ACCOUNT_NAME is not set
    • Enh #5173: Add experimental S3 cold storage support
    • Enh #5174: Add xattr support for NetBSD 10+
    • Enh #5251: Improve retry handling for flaky rclone backends
    • Enh #52897: Make recover automatically rebuild index when needed

    Details

    Security #5291: Mitigate attack on content-defined chunking algorithm

    Restic uses Rabin Fingerprints for its content-defined chunker. The algorithm relies on a secret polynomial to split files into chunks.

    As shown in the paper "Chunking Attacks on File Backup Services using Content-Defined Chunking" by Boris Alexeev, Colin Percival and Yan X Zhang, an attacker that can observe chunk sizes for a known file can derive the secret polynomial. Knowledge of the polynomial might in some cases allow an attacker to check whether certain large files are stored in a repository.

    A practical attack is nevertheless hard as restic merges multiple chunks into opaque pack files and by default processes multiple files in parallel. This likely prevents an attacker from matching pack files to the attacker-known file and thereby prevents the attack.

    Despite the low chances of a practical attack, restic now has added mitigation that randomizes how chunks are assembled into pack files. This prevents attackers from guessing which chunks are part of a pack file and thereby prevents learning the chunk sizes.

    #5291 #5295

    Bugfix #1843: Correctly restore long filepaths' timestamp on old Windows

    The restore command now correctly restores timestamps for files with paths longer than 256 characters on Windows versions prior to Windows 10 1607.

    #1843 #5061

    Bugfix #2165: Ignore disappeared backup source files

    The backup command now quietly skips files that are removed between directory listing and backup, instead of printing errors like:

    error: lstat /some/file/name: no such file or directory
    

    #2165 #3098 #5143 #5145

    Bugfix #5153: Include root tree when searching using find --tree

    The restic find --tree command did not find trees referenced by restic snapshot --json. It now correctly includes the root tree when searching.

    #5153

    Bugfix #5169: Prevent Windows VSS event log 8194 warnings for backup with fs snapshot

    When running backup with the --use-fs-snapshot option in Windows with admin rights, event logs like

    Volume Shadow Copy Service error: Unexpected error querying for the IVssWriterCallback interface. hr = 0x80070005, Access is denied.
    . This is often caused by incorrect security settings in either the writer or requester process.
    Operation:
    Gathering Writer Data
    Context:
    Writer Class Id: {e8132975-6f93-4464-a53e-1050253ae220}
    Writer Name: System Writer
    Writer Instance ID: {54b151ac-d27d-4628-9cb0-2bc40959f50f}
    

    Are created several times even though the backup itself succeeds. This has now been fixed.

    #5169 #5170 https://forum.restic.net/t/windows-shadow-copy-snapshot-vss-unexpected-provider-error/3674/2

    Bugfix #5212: Fix duplicate data handling in prune --max-unused

    The prune --max-unused size command did not correctly account for duplicate data. If a repository contained a large amount of duplicate data, this could previously result in pruning too little data. This has now been fixed.

    #5212 https://forum.restic.net/t/restic-not-obeying-max-unused-parameter-on-prune/8879

    Bugfix #5249: Fix creation of oversized index by repair index --read-all-packs

    Since restic 0.17.0, the new index created by repair index --read-all-packs was written as a single large index. This significantly increased memory usage while loading the index.

    The index is now correctly split into multiple smaller indexes, and repair index now also automatically splits oversized indexes.

    #5249

    Bugfix #5259: Fix rare crash in command output

    Some commands could in rare cases crash when trying to print status messages and request retries at the same time, resulting in an error like the following:

    panic: runtime error: slice bounds out of range [468:156]
    [...]
    github.com/restic/restic/internal/ui/termstatus.(*lineWriter).Write(...)
    /restic/internal/ui/termstatus/stdio_wrapper.go:36 +0x136
    

    This has now been fixed.

    #5259 #5300

    Change #4938: Update dependencies and require Go 1.23 or newer

    We have updated all dependencies. Restic now requires Go 1.23 or newer to build.

    This also disables support for TLS versions older than TLS 1.2. On Windows, restic now requires at least Windows 10 or Windows Server 2016. On macOS, restic now requires at least macOS 11 Big Sur.

    #4938

    Change #5162: Promote feature flags

    The deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth and safe-forget-keep-tags features are now stable and can no longer be disabled. The corresponding feature flags will be removed in restic 0.19.0.

    #5162

    Enhancement #1378: Add JSON support to check command

    The check command now supports the --json option to output all statistics in JSON format.

    #1378 #5194

    Enhancement #2511: Support generating shell completions to stdout

    The generate command now supports using - as the filename with the --[shell]-completion option to write the generated output to stdout.

    #2511 #5053

    Enhancement #3697: Allow excluding online-only cloud files (e.g. OneDrive)

    Restic treated files synced using OneDrive Files On-Demand as though they were regular files. This caused issues with VSS and could cause OneDrive to download all files.

    Restic now allows the user to exclude these files when backing up with the --exclude-cloud-files option.

    #3697 #4935 #4990

    Enhancement #4179: Add sort option to ls command

    The ls -l command output can now be sorted using the new --sort option for the fields name, size, time (same as mtime), mtime, atime, ctime and extension. A --reverse option is also available.

    #4179 #5182

    Enhancement #4433: Change default sort order for find output

    The find command now sorts snapshots from newest to oldest by default. The previous oldest-to-newest order can be restored using the new --reverse option.

    #4433 #5184

    Enhancement #4521: Add support for Microsoft Blob Storage access tiers

    The new -o azure.access-tier= option allows specifying the access tier (Hot, Cool or Cold) for objects created in Microsoft Blob Storage. If unspecified, the storage account's default tier is used.

    There is no official Archive storage support in restic, use this option at your own risk. To restore any data, it is necessary to manually warm up the required data in the Archive tier.

    #4521 #5046

    Enhancement #4942: Add snapshot summary statistics to rewritten snapshots

    The rewrite command now supports a --snapshot-summary option to add statistics data to snapshots. Only two fields in the summary will be non-zero: TotalFilesProcessed and TotalBytesProcessed.

    For snapshots rewritten using the --exclude options, the summary statistics are updated accordingly.

    #4942 #5185

    Enhancement #4948: Format exit errors as JSON when requested

    Restic now formats error messages as JSON when the --json flag is used.

    #4948 #4952

    Enhancement #4983: Add SLSA provenance to GHCR container images

    Restic's GitHub Container Registry (GHCR) image build workflow now includes SLSA (Supply-chain Levels for Software Artifacts) provenance generation.

    Please see the restic documentation for more information about verifying SLSA provenance.

    #4983 #4999

    Enhancement #5054: Enable compression for ZIP archives in dump command

    The dump command now compresses ZIP archives using the DEFLATE algorithm, reducing the size of exported archives.

    #5054

    Enhancement #5081: Add retry mechanism for loading repository config

    Restic now retries loading the repository config file when opening a repository. The init command now also retries backend operations.

    #5081 #5095

    Enhancement #5089: Allow including/excluding extended file attributes during restore

    The restore command now supports the --exclude-xattr and --include-xattr options to control which extended file attributes will be restored. By default, all attributes are restored.

    #5089 #5129

    Enhancement #5092: Show count of deleted files and directories during restore

    The restore command now reports the number of deleted files and directories, both in the regular output and in the files_deleted field of the JSON output.

    #5092 #5100

    Enhancement #5109: Make small pack size configurable for prune

    The prune command now supports the --repack-smaller-than option that allows repacking pack files smaller than a specified size.

    #5109 #5183

    Enhancement #5119: Add start and end timestamps to backup JSON output

    The JSON output of the backup command now includes backup_start and backup_end timestamps, containing the start and end time of the backup.

    #5119

    Enhancement #5131: Add DragonFlyBSD support

    Restic can now be compiled on DragonflyBSD.

    #5131 #5138

    Enhancement #5137: Make tag command print which snapshots were modified

    The tag command now outputs which snapshots were modified along with their new snapshot ID. The command supports the --json option for machine-readable output.

    #5137 #5144

    Enhancement #5141: Provide clear error message if AZURE_ACCOUNT_NAME is not set

    If AZURE_ACCOUNT_NAME was not set, commands related to an Azure repository would result in a misleading networking error. Restic now detect this and provides a clear warning that the variable is not defined.

    #5141

    Enhancement #5173: Add experimental S3 cold storage support

    Introduce S3 backend options for transitioning pack files from cold to hot storage on S3 and S3-compatible providers. Note: this only works for the prune, copy and restore commands for now.

    This experimental feature is gated behind the "s3-restore" feature flag.

    #3202 #2504 #5173

    Enhancement #5174: Add xattr support for NetBSD 10+

    Extended attribute support for backup and restore operations is now available on NetBSD version 10 and later.

    #5174 #5180

    Enhancement #5251: Improve retry handling for flaky rclone backends

    Since restic 0.17.0, the backend retry mechanisms rely on backends correctly reporting when a file does not exist. This is not always the case for some rclone backends, which caused restic to stop retrying after the first failure.

    For rclone, failed requests are now retried up to 5 times before giving up.

    #5251

    Enhancement #52897: Make recover automatically rebuild index when needed

    When trying to recover data from an interrupted snapshot, it was previously necessary to manually run repair index before runnning recover. This now happens automatically so that only recover is necessary.

    #52897 #5296

    Original source
  • Nov 8, 2024
    • Date parsed from source:
      Nov 8, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.17.3

    restic ships 0.17.3 with key bug fixes for macOS Sonoma mounts, Windows backup metadata issues, and broken SFTP retries, plus a handy prune --dry-run improvement that works without locking the repository.

    Changelog for restic 0.17.3 (2024-11-08)

    The following sections list the changes in restic 0.17.3 relevant to restic users. The changes are ordered by importance.

    Summary

    • Fix #4971: Fix unusable mount on macOS Sonoma
    • Fix #5003: Fix metadata errors during backup of removable disks on Windows
    • Fix #5101: Do not retry load/list operation if SFTP connection is broken
    • Fix #5107: Fix metadata error on Windows for backups using VSS
    • Enh #5096: Allow prune --dry-run without lock

    Details

    Bugfix #4971: Fix unusable mount on macOS Sonoma

    On macOS Sonoma when using FUSE-T, it was not possible to access files in a mounted repository. This issue is now resolved.

    #4971 #5048

    Bugfix #5003: Fix metadata errors during backup of removable disks on Windows

    Since restic 0.17.0, backing up removable disks on Windows could report errors with retrieving metadata like shown below.

    error: incomplete metadata for d:\filename: get named security info failed with: Access is denied.
    

    This has now been fixed.

    #5003 #5123 https://forum.restic.net/t/backing-up-a-folder-from-a-veracrypt-volume-brings-up-errors-since-restic-v17-0/8444

    Bugfix #5101: Do not retry load/list operation if SFTP connection is broken

    When using restic with the SFTP backend, backend operations that load a file or list files were retried even if the SFTP connection was broken. This has now been fixed.

    #5101 https://forum.restic.net/t/restic-hanging-on-backup/8559

    Bugfix #5107: Fix metadata error on Windows for backups using VSS

    Since restic 0.17.2, when creating a backup on Windows using --use-fs-snapshot, restic would report an error like the following:

    error: incomplete metadata for C:\: get EA failed while opening file handle for path \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyXX\, with: The process cannot access the file because it is being used by another process.
    

    This has now been fixed by correctly handling paths that refer to volume shadow copy snapshots.

    #5107 #5110 #5112

    Enhancement #5096: Allow prune --dry-run without lock

    The prune --dry-run --no-lock now allows performing a dry-run without locking the repository. Note that if the repository is modified concurrently, prune may return inaccurate statistics or errors.

    #5096

    Original source
  • Similar to restic with recent updates:

  • Oct 27, 2024
    • Date parsed from source:
      Oct 27, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.17.2

    restic releases 0.17.2 with focused bug fixes for more reliable backups and repository handling, including Azure container-level SAS and SAT token support, cleaner cache cleanup, better tag locking errors, irregular file exclusion, and improved Windows VSS metadata handling.

    Changelog for restic 0.17.2 (2024-10-27)

    The following sections list the changes in restic 0.17.2 relevant to restic users. The changes are ordered by importance.

    Summary

    • Fix #4004: Support container-level SAS/SAT tokens for Azure backend
    • Fix #5047: Resolve potential error during concurrent cache cleanup
    • Fix #5050: Return error if tag fails to lock repository
    • Fix #5057: Exclude irregular files from backups
    • Fix #5063: Correctly backup extended metadata when using VSS on Windows

    Details

    Bugfix #4004: Support container-level SAS/SAT tokens for Azure backend

    Restic previously expected SAS/SAT tokens to be generated at the account level, which prevented tokens created at the container level from being used to initialize a repository. This caused an error when attempting to initialize a repository with container-level tokens.

    Restic now supports both account-level and container-level SAS/SAT tokens for initializing a repository.

    #4004 #5093

    Bugfix #5047: Resolve potential error during concurrent cache cleanup

    When multiple restic processes ran concurrently, they could compete to remove obsolete snapshots from the local backend cache, sometimes leading to a "no such file or directory" error. Restic now suppresses this error to prevent issues during cache cleanup.

    #5047

    Bugfix #5050: Return error if tag fails to lock repository

    Since restic 0.17.0, the tag command did not return an error when it failed to open or lock the repository. This issue has now been fixed.

    #5050 #5056

    Bugfix #5057: Exclude irregular files from backups

    Since restic 0.17.1, files with the type irregular could mistakenly be included in snapshots, especially when backing up special file types on Windows that restic cannot process. This issue has now been fixed.

    Previously, this bug caused the check command to report errors like the following one:

    tree 12345678[...]: node "example.zip" with invalid type "irregular"
    

    To repair affected snapshots, upgrade to restic 0.17.2 and run:

    restic repair snapshots --forget
    

    This will remove the irregular files from the snapshots (creating a new snapshot ID for each of the affected snapshots).

    #5057 https://forum.restic.net/t/errors-found-by-check-1-invalid-type-irregular-2-ciphertext-verification-failed/8447/2

    Bugfix #5063: Correctly backup extended metadata when using VSS on Windows

    On Windows, when creating a backup with the --use-fs-snapshot option, restic read extended metadata from the original filesystem path instead of from the snapshot. This could result in errors if files were removed during the backup process.

    This issue has now been resolved.

    #5063 #5097 #5099

    Original source
  • Sep 5, 2024
    • Date parsed from source:
      Sep 5, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.17.1

    restic releases 0.17.1 with a broad round of Windows, macOS, and restore fixes, plus smoother JSON output, improved repository locking, better HTTP/2 support, automatic cache cleanup, a restore verify progress bar, and a customizable stuck-request timeout.

    Changelog for restic 0.17.1 (2024-09-05)

    The following sections list the changes in restic 0.17.1 relevant to restic users. The changes are ordered by importance.

    Summary

    Fix #2004: Correctly handle volume names in backup command on Windows

    Fix #4945: Include missing backup error text with --json

    Fix #4953: Correctly handle long paths on older Windows versions

    Fix #4957: Fix delayed cancellation of certain commands

    Fix #4958: Don't ignore metadata-setting errors during restore

    Fix #4969: Correctly restore timestamp for files with resource forks on macOS

    Fix #4975: Prevent backup --stdin-from-command from panicking

    Fix #4980: Skip extended attribute processing on unsupported Windows volumes

    Fix #5004: Fix spurious "A Required Privilege Is Not Held by the Client" error

    Fix #5005: Fix rare failures to retry locking a repository

    Fix #5018: Improve HTTP/2 support for REST backend

    Chg #4953: Also back up files with incomplete metadata

    Enh #4795: Display progress bar for restore --verify

    Enh #4934: Automatically clear removed snapshots from cache

    Enh #4944: Print JSON-formatted errors during restore --json

    Enh #4959: Return exit code 12 for "bad password" errors

    Enh #4970: Make timeout for stuck requests customizable

    Details

    Bugfix #2004: Correctly handle volume names in backup command on Windows

    On Windows, when the specified backup target only included the volume name without a trailing slash, for example, C:, then restoring the resulting snapshot would result in an error. Note that using C:\ as backup target worked correctly.

    Specifying volume names is now handled correctly. To restore snapshots created before this bugfix, use the : syntax. For example, to restore a snapshot with ID 12345678 that backed up C:, use the following command:

    restic restore 12345678:/C/C:./ --target output/folder
    

    #2004 #5028

    Bugfix #4945: Include missing backup error text with --json

    Previously, when running a backup with the --json option, restic failed to include the actual error message in the output, resulting in "error": {} being displayed.

    This has now been fixed, and restic now includes the error text in JSON output.

    #4945 #4946

    Bugfix #4953: Correctly handle long paths on older Windows versions

    On older Windows versions, like Windows Server 2012, restic 0.17.0 failed to back up files with long paths. This problem has now been resolved.

    #4953 #4954

    Bugfix #4957: Fix delayed cancellation of certain commands

    Since restic 0.17.0, some commands did not immediately respond to cancellation via Ctrl-C (SIGINT) and continued running for a short period. The most affected commands were diff,find, ls, stats and rewrite. This is now resolved.

    #4957 #4960

    Bugfix #4958: Don't ignore metadata-setting errors during restore

    Previously, restic used to ignore errors when setting timestamps, attributes, or file modes during a restore. It now reports those errors, except for permission related errors when running without root privileges.

    #4958

    Bugfix #4969: Correctly restore timestamp for files with resource forks on macOS

    On macOS, timestamps were not restored for files with resource forks. This has now been fixed.

    #4969 #5006

    Bugfix #4975: Prevent backup --stdin-from-command from panicking

    Restic would previously crash if --stdin-from-command was specified without providing a command. This issue has now been fixed.

    #4975 #4976

    Bugfix #4980: Skip extended attribute processing on unsupported Windows volumes

    With restic 0.17.0, backups of certain Windows paths, such as network drives, failed due to errors while fetching extended attributes.

    Restic now skips extended attribute processing for volumes where they are not supported.

    #4955 #4950 #4980 #4998

    Bugfix #5004: Fix spurious "A Required Privilege Is Not Held by the Client" error

    On Windows, creating a backup could sometimes trigger the following error:

    error: nodeFromFileInfo [...]: get named security info failed with: a required privilege is not held by the client.
    

    This has now been fixed.

    #5004 #5019

    Bugfix #5005: Fix rare failures to retry locking a repository

    Restic 0.17.0 could in rare cases fail to retry locking a repository if one of the lock files failed to load, resulting in the error:

    unable to create lock in backend: circuit breaker open for file &lt;lock/1234567890&gt;
    

    This issue has now been addressed. The error handling now properly retries the locking operation. In addition, restic waits a few seconds between locking retries to increase chances of successful locking.

    #5005 #5011 #5012

    Bugfix #5018: Improve HTTP/2 support for REST backend

    If rest-server tried to gracefully shut down an HTTP/2 connection still in use by the client, it could result in the following error:

    http2: Transport: cannot retry err [http2: Transport received Server's graceful shutdown GOAWAY] after Request.Body was written; define Request.GetBody to avoid this error
    

    This issue has now been resolved.

    #5018 https://forum.restic.net/t/receiving-http2-goaway-messages-with-windows-restic-v0-17-0/8367

    Change #4953: Also back up files with incomplete metadata

    If restic failed to read extended metadata for a file or folder during a backup, then the file or folder was not included in the resulting snapshot. Instead, a warning message was printed along with returning exit code 3 once the backup was finished.

    Now, restic also includes items for which the extended metadata could not be read in a snapshot. The warning message has been updated to:

    incomplete metadata for /path/to/file: &lt;details about error&gt;
    

    #4953 #4977

    Enhancement #4795: Display progress bar for restore --verify

    When the restore command is run with --verify, it now displays a progress bar while the verification step is running. The progress bar is not shown when the --json flag is specified.

    #4795 #4989

    Enhancement #4934: Automatically clear removed snapshots from cache

    Previously, restic only removed snapshots from the cache on the host where the forget command was executed. On other hosts that use the same repository, the old snapshots remained in the cache.

    Restic now automatically clears old snapshots from the local cache of the current host.

    #4934 #4981

    Enhancement #4944: Print JSON-formatted errors during restore --json

    Restic used to print any restore errors directly to the console as freeform text messages, even when using the --json option.

    Now, when --json is specified, restic prints them as JSON formatted messages.

    #4944 #4946

    Enhancement #4959: Return exit code 12 for "bad password" errors

    Restic now returns exit code 12 when it cannot open the repository due to an incorrect password.

    #4959

    Enhancement #4970: Make timeout for stuck requests customizable

    Restic monitors connections to the backend to detect stuck requests. If a request does not return any data within five minutes, restic assumes the request is stuck and retries it. However, for large repositories this timeout might be insufficient to collect a list of all files, causing the following error:

    List(data) returned error, retrying after 1s: [...]: request timeout
    

    It is now possible to increase the timeout using the --stuck-request-timeout option.

    #4970 #5014

    Original source
  • Jul 26, 2024
    • Date parsed from source:
      Jul 26, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.17.0

    restic releases 0.17.0 with a broad stability and usability update, fixing backup, restore, SFTP, and Windows issues while adding safer forget handling, resumable prune, richer JSON output, new restore options, empty-password support, and stronger backend reliability.

    Changelog for restic 0.17.0 (2024-07-26)

    The following sections list the changes in restic 0.17.0 relevant to restic users. The changes are ordered by importance.

    Summary

    Fix #3600: Handle unreadable xattrs in folders above backup source
    Fix #4209: Fix slow SFTP upload performance
    Fix #4503: Correct hardlink handling in stats command
    Fix #4568: Prevent forget --keep-tags <invalid> from deleting all snapshots
    Fix #4615: Make find not sometimes ignore directories
    Fix #4656: Properly report ID of newly added keys
    Fix #4703: Shutdown cleanly when receiving SIGTERM
    Fix #4709: Correct --no-lock handling of ls and tag commands
    Fix #4760: Fix possible error on concurrent cache cleanup
    Fix #4850: Handle UTF-16 password files in key command correctly
    Fix #4902: Update snapshot summary on rewrite
    Chg #956: Return exit code 10 and 11 for non-existing and locked repository
    Chg #4540: Require at least ARMv6 for ARM binaries
    Chg #4602: Deprecate legacy index format and s3legacy repository layout
    Chg #4627: Redesign backend error handling to improve reliability
    Chg #4707: Disable S3 anonymous authentication by default
    Chg #4744: Include full key ID in JSON output of key list
    Enh #662: Optionally skip snapshot creation if nothing changed
    Enh #693: Include snapshot size in snapshots output
    Enh #805: Add bitrot detection to diff command
    Enh #828: Improve features of the repair packs command
    Enh #1786: Support repositories with empty password
    Enh #2348: Add --delete option to restore command
    Enh #3067: Add extended options to configure Windows Shadow Copy Service
    Enh #3406: Improve dump performance for large files
    Enh #3806: Optimize and make prune command resumable
    Enh #4006: (alpha) Store deviceID only for hardlinks
    Enh #4048: Add support for FUSE-T with mount on macOS
    Enh #4251: Support reading backup from a command's standard output
    Enh #4287: Support connection to rest-server using unix socket
    Enh #4354: Significantly reduce prune memory usage
    Enh #4437: Make check command create non-existent cache directory
    Enh #4472: Support AWS Assume Role for S3 backend
    Enh #4547: Add --json option to version command
    Enh #4549: Add --ncdu option to ls command
    Enh #4573: Support rewriting host and time metadata in snapshots
    Enh #4583: Ignore s3.storage-class archive tiers for metadata
    Enh #4590: Speed up mount command's error detection
    Enh #4601: Add support for feature flags
    Enh #4611: Back up more file metadata on Windows
    Enh #4664: Make ls use message_type field in JSON output
    Enh #4676: Make key command's actions separate sub-commands
    Enh #4678: Add --target option to the dump command
    Enh #4708: Back up and restore SecurityDescriptors on Windows
    Enh #4733: Allow specifying --host via environment variable
    Enh #4737: Include snapshot ID in reason field of forget JSON output
    Enh #4764: Support forgetting all snapshots
    Enh #4768: Allow specifying custom User-Agent for outgoing requests
    Enh #4781: Add restore options to read include/exclude patterns from files
    Enh #4807: Support Extended Attributes on Windows NTFS
    Enh #4817: Make overwrite behavior of restore customizable
    Enh #4839: Add dry-run support to restore command

    Details

    Bugfix #3600: Handle unreadable xattrs in folders above backup source

    When backup sources are specified using absolute paths, backup also includes information about the parent folders of the backup sources in the snapshot.

    If the extended attributes for some of these folders could not be read due to missing permissions, this caused the backup to fail. This has now been fixed.

    #3600 #4668 https://forum.restic.net/t/parent-directories-above-the-snapshot-source-path-fatal-error-permission-denied/7216

    Bugfix #4209: Fix slow SFTP upload performance

    Since restic 0.12.1, the upload speed of the sftp backend to a remote server has regressed significantly. This has now been fixed.

    #4209 #4782

    Bugfix #4503: Correct hardlink handling in stats command

    If files on different devices had the same inode ID, the stats command did not correctly calculate the snapshot size. This has now been fixed.

    #4503 #4006 https://forum.restic.net/t/possible-bug-in-stats/6461/8

    Bugfix #4568: Prevent forget --keep-tags <invalid> from deleting all snapshots

    Running forget --keep-tags <invalid>, where <invalid> is a tag that does not exist in the repository, would remove all snapshots. This is especially problematic if the tag name contains a typo.

    The forget command now fails with an error if all snapshots in a snapshot group would be deleted. This prevents the above example from deleting all snapshots.

    It is possible to temporarily disable the new check by setting the environment variable RESTIC_FEATURES=safe-forget-keep-tags=false. Note that this feature flag will be removed in the next minor restic version.

    #4568 #4764

    Bugfix #4615: Make find not sometimes ignore directories

    In some cases, the find command ignored empty or moved directories. This has now been fixed.

    #4615

    Bugfix #4656: Properly report ID of newly added keys

    restic key add now reports the ID of the newly added key. This simplifies selecting a specific key using the --key-hint key option.

    #4656 #4657

    Bugfix #4703: Shutdown cleanly when receiving SIGTERM

    Previously, when restic received the SIGTERM signal it would terminate immediately, skipping cleanup and potentially causing issues like stale locks being left behind. This primarily effected containerized restic invocations that use SIGTERM, but could also be triggered via a simple killall restic.

    This has now been fixed, such that restic shuts down cleanly when receiving the SIGTERM signal.

    #4703

    Bugfix #4709: Correct --no-lock handling of ls and tag commands

    The ls command never locked the repository. This has now been fixed, with the old behavior still being supported using ls --no-lock. The latter invocation also works with older restic versions.

    The tag command erroneously accepted the --no-lock command. This command now always requires an exclusive lock.

    #4709

    Bugfix #4760: Fix possible error on concurrent cache cleanup

    If multiple restic processes concurrently cleaned up no longer existing files from the cache, this could cause some of the processes to fail with an no such file or directory error. This has now been fixed.

    #4760 #4761

    Bugfix #4850: Handle UTF-16 password files in key command correctly

    Previously, key add and key passwd did not properly decode UTF-16 encoded passwords read from a password file. This has now been fixed to correctly match the encoding when opening a repository.

    #4850 #4851

    Bugfix #4902: Update snapshot summary on rewrite

    Restic previously did not recalculate the total number of files and bytes processed when files were excluded from a snapshot by the rewrite command. This has now been fixed.

    #4902 #4905

    Change #956: Return exit code 10 and 11 for non-existing and locked repository

    If a repository does not exist or cannot be locked, restic previously always returned exit code 1. This made it difficult to distinguish these cases from other errors.

    Restic now returns exit code 10 if the repository does not exist, and exit code 11 if the repository could be not locked due to a conflicting lock.

    #956 #4884

    Change #4540: Require at least ARMv6 for ARM binaries

    The official release binaries of restic now require at least ARMv6 support for ARM platforms.

    #4540 #4542

    Change #4602: Deprecate legacy index format and s3legacy repository layout

    Support for the legacy index format used by restic before version 0.2.0 has been deprecated and will be removed in the next minor restic version. You can use restic repair index to update the index to the current format.

    It is possible to temporarily reenable support for the legacy index format by setting the environment variable RESTIC_FEATURES=deprecate-legacy-index=false. Note that this feature flag will be removed in the next minor restic version.

    Support for the s3legacy repository layout used for the S3 backend before restic 0.7.0 has been deprecated and will be removed in the next minor restic version. You can migrate your S3 repository to the current layout using RESTIC_FEATURES=deprecate-s3-legacy-layout=false restic migrate s3_layout.

    It is possible to temporarily reenable support for the s3legacy layout by setting the environment variable RESTIC_FEATURES=deprecate-s3-legacy-layout=false. Note that this feature flag will be removed in the next minor restic version.

    #4602 #4724 #4743

    Change #4627: Redesign backend error handling to improve reliability

    Restic now downloads pack files in large chunks instead of using a streaming download. This prevents failures due to interrupted streams. The restore command now also retries downloading individual blobs that could not be retrieved.

    HTTP requests that are stuck for more than two minutes while uploading or downloading are now forcibly interrupted. This ensures that stuck requests are retried after a short timeout.

    Attempts to access a missing or truncated file will no longer be retried. This avoids unnecessary retries in those cases. All other backend requests are retried for up to 15 minutes. This ensures that temporarily interrupted network connections can be tolerated.

    If a download yields a corrupt file or blob, then the download will be retried once.

    Most parts of the new backend error handling can temporarily be disabled by setting the environment variable RESTIC_FEATURES=backend-error-redesign=false. Note that this feature flag will be removed in the next minor restic version.

    #4627 #4193 #4515 #1523 #4605 #4792 #4520 #4800 #4784 #4844

    Change #4707: Disable S3 anonymous authentication by default

    When using the S3 backend with anonymous authentication, it continuously tried to retrieve new authentication credentials, causing bad performance.

    Now, to use anonymous authentication, it is necessary to pass the extended option -o s3.unsafe-anonymous-auth=true to restic.

    It is possible to temporarily revert to the old behavior by setting the environment variable RESTIC_FEATURES=explicit-s3-anonymous-auth=false. Note that this feature flag will be removed in the next minor restic version.

    #4707 #4908

    Change #4744: Include full key ID in JSON output of key list

    The JSON output of the key list command has changed to include the full key ID instead of just a shortened version of the ID, as the latter can be ambiguous in some rare cases. To derive the short ID, please truncate the full ID down to eight characters.

    #4744 #4745

    Enhancement #662: Optionally skip snapshot creation if nothing changed

    The backup command always created a snapshot even if nothing in the backup set changed compared to the parent snapshot.

    Restic now supports the --skip-if-unchanged option for the backup command, which omits creating a snapshot if the new snapshot's content would be identical to that of the parent snapshot.

    #662 #4816

    Enhancement #693: Include snapshot size in snapshots output

    The snapshots command now prints the size for snapshots created using this or a future restic version. To achieve this, the backup command now stores the backup summary statistics in the snapshot.

    The text output of the snapshots command only shows the snapshot size. The other statistics are only included in the JSON output. To inspect these statistics use restic snapshots --json or restic cat snapshot <snapshotID>.

    #693 #4705 #4913

    Enhancement #805: Add bitrot detection to diff command

    The output of the diff command now includes the modifier ? for files to indicate bitrot in backed up files. The ? will appear whenever there is a difference in content while the metadata is exactly the same.

    Since files with unchanged metadata are normally not read again when creating a backup, the detection is only effective when the right-hand side of the diff has been created with backup --force.

    #805 #4526

    Enhancement #828: Improve features of the repair packs command

    The repair packs command has been improved to also be able to process truncated pack files. The check and check --read-data command will provide instructions on using the command if necessary to repair a repository. See the guide at https://restic.readthedocs.io/en/stable/077_troubleshooting.html for further instructions.

    #828 #4644 #4882

    Enhancement #1786: Support repositories with empty password

    Restic previously required a password to create or operate on repositories. Using the new option --insecure-no-password it is now possible to disable this requirement. Restic will not prompt for a password when using this option.

    For security reasons, the option must always be specified when operating on repositories with an empty password, and specifying --insecure-no-password while also passing a password to restic via a CLI option or environment variable results in an error.

    The init and copy commands add the related --from-insecure-no-password option, which applies to the source repository. The key add and key passwd commands add the --new-insecure-no-password option to add or set an empty password.

    #1786 #4326 #4698 #4808

    Enhancement #2348: Add --delete option to restore command

    The restore command now supports a --delete option that allows removing files and directories from the target directory that do not exist in the snapshot. This option also allows files in the snapshot to replace non-empty directories having the same name.

    To check that only expected files are deleted, add the --dry-run --verbose=2 options.

    #2348 #4881

    Enhancement #3067: Add extended options to configure Windows Shadow Copy Service

    Previous, restic always used a 120 seconds timeout and unconditionally created VSS snapshots for all volume mount points on disk. This behavior can now be fine-tuned by the following new extended options (available only on Windows):
    -o vss.timeout: Time that VSS can spend creating snapshot before timing out (default: 120s)
    -o vss.exclude-all-mount-points: Exclude mountpoints from snapshotting on all volumes (default: false)
    -o vss.exclude-volumes: Semicolon separated list of volumes to exclude from snapshotting
    -o vss.provider: VSS provider identifier which will be used for snapshotting

    For example, change VSS timeout to five minutes and disable snapshotting of mount points on all volumes:

    Restic backup --use-fs-snapshot -o vss.timeout=5m -o vss.exclude-all-mount-points=true

    Exclude drive d:, mount point c:\mnt and a specific volume from snapshotting:

    Restic backup --use-fs-snapshot -o vss.exclude-volumes="d:;c:\mnt;?\Volume{e2e0315d-9066-4f97-8343-eb5659b35762}"

    Uses 'Microsoft Software Shadow Copy provider 1.0' instead of the default provider:

    Restic backup --use-fs-snapshot -o vss.provider={b5946137-7b9f-4925-af80-51abd60b20d5}

    #3067

    Enhancement #3406: Improve dump performance for large files

    The dump command now retrieves the data chunks for a file in parallel. This improves the download performance by up to as many times as the configured number of parallel backend connections.

    #3406 #4796

    Enhancement #3806: Optimize and make prune command resumable

    Previously, if the prune command was interrupted, a later prune run would start repacking pack files from the start, as prune did not update the index while repacking.

    The prune command now supports resuming interrupted prune runs. The update of the repository index has also been optimized to use less memory and only rewrite parts of the index that have changed.

    #3806 #4812

    Enhancement #4006: (alpha) Store deviceID only for hardlinks

    Set RESTIC_FEATURES=device-id-for-hardlinks to enable this alpha feature. The feature flag will be removed after repository format version 3 becomes available or be replaced with a different solution.

    When creating backups from a filesystem snapshot, for example created using BTRFS subvolumes, the deviceID of the filesystem changes compared to previous snapshots. This prevented restic from deduplicating the directory metadata of a snapshot.

    When this alpha feature is enabled, the deviceID is only stored for hardlinks, which significantly reduces the metadata duplication for most backups.

    #4006

    Enhancement #4048: Add support for FUSE-T with mount on macOS

    The restic mount command now supports creating FUSE mounts using FUSE-T on macOS.

    #4048 #4825

    Enhancement #4251: Support reading backup from a command's standard output

    The backup command now supports the --stdin-from-command option. When using this option, the arguments to backup are interpreted as a command instead of paths to back up. backup then executes the given command and stores the standard output from it in the backup, similar to the what the --stdin option does. This also enables restic to verify that the command completes with exit code zero. A non-zero exit code causes the backup to fail.

    Note that the --stdin option does not have to be specified at the same time, and that the --stdin-filename option also applies to --stdin-from-command.

    Example: restic backup --stdin-from-command --stdin-filename dump.sql mysqldump [...]

    #4251 #4410

    Enhancement #4287: Support connection to rest-server using unix socket

    Restic now supports using a unix socket to connect to a rest-server version 0.13.0 or later. This allows running restic as follows:

    rest-server --listen unix:/tmp/rest.socket --data /path/to/data &
    restic -r rest:http+unix:///tmp/rest.socket:/my_backup_repo/ [...]

    #4287 #4655

    Enhancement #4354: Significantly reduce prune memory usage

    The prune command has been optimized to use up to 60% less memory. The memory usage should now be roughly similar to creating a backup.

    #4354 #4812

    Enhancement #4437: Make check command create non-existent cache directory

    Previously, if a custom cache directory was specified for the check command, but the directory did not exist, check continued with the cache disabled.

    The check command now attempts to create the cache directory before initializing the cache.

    #4437 #4805 #4883

    Enhancement #4472: Support AWS Assume Role for S3 backend

    Previously only credentials discovered via the Minio discovery methods were used to authenticate.

    However, there are many circumstances where the discovered credentials have lower permissions and need to assume a specific role. This is now possible using the following new environment variables:
    RESTIC_AWS_ASSUME_ROLE_ARN
    RESTIC_AWS_ASSUME_ROLE_SESSION_NAME
    RESTIC_AWS_ASSUME_ROLE_EXTERNAL_ID
    RESTIC_AWS_ASSUME_ROLE_REGION (defaults to us-east-1)
    RESTIC_AWS_ASSUME_ROLE_POLICY
    RESTIC_AWS_ASSUME_ROLE_STS_ENDPOINT

    #4472 #4474

    Enhancement #4547: Add --json option to version command

    Restic now supports outputting restic version along with the Go version, OS and architecture used to build restic in JSON format using version --json.

    #4547 #4553

    Enhancement #4549: Add --ncdu option to ls command

    NCDU (NCurses Disk Usage) is a tool to analyse disk usage of directories. It has an option to save a directory tree and analyse it later.

    The ls command now supports outputting snapshot information in the NCDU format using the --ncdu option. Example usage: restic ls latest --ncdu | ncdu -f -

    #4549 #4550 #4911

    Enhancement #4573: Support rewriting host and time metadata in snapshots

    The rewrite command now supports rewriting the host and/or time metadata of a snapshot using the new --new-host and --new-time options.

    #4573

    Enhancement #4583: Ignore s3.storage-class archive tiers for metadata

    Restic used to store all files on S3 using the specified s3.storage-class.

    Now, restic will only use non-archive storage tiers for metadata, to avoid problems when accessing a repository. To restore any data, it is still necessary to manually warm up the required data beforehand.

    NOTE: There is no official cold storage support in restic, use this option at your own risk.

    #4583 #4584

    Enhancement #4590: Speed up mount command's error detection

    The mount command now checks for the existence of the mountpoint before opening the repository, leading to quicker error detection.

    #4590

    Enhancement #4601: Add support for feature flags

    Restic now supports feature flags that can be used to enable and disable experimental features. The flags can be set using the environment variable RESTIC_FEATURES. To get a list of currently supported feature flags, use the features command.

    #4601 #4666

    Enhancement #4611: Back up more file metadata on Windows

    Previously, restic did not back up all common Windows-specific metadata.

    Restic now stores file creation time and file attributes like the hidden, read-only and encrypted flags when backing up files and folders on Windows.

    #4611

    Enhancement #4664: Make ls use message_type field in JSON output

    The ls command was the only restic command that used the struct_type field in its JSON output format to specify the message type.

    The JSON output of the ls command now also includes the message_type field, which is consistent with other commands. The struct_type field is still included, but now deprecated.

    #4664

    Enhancement #4676: Make key command's actions separate sub-commands

    Each of the add, list, remove and passwd actions provided by the key command is now a separate sub-command and have its own documentation which can be invoked using restic key <add|list|remove|passwd> --help.

    #4676 #4685

    Enhancement #4678: Add --target option to the dump command

    Restic dump always printed to the standard output. It now supports specifying a --target file to write its output to.

    #4678 #4682 #4692

    Enhancement #4708: Back up and restore SecurityDescriptors on Windows

    Restic now backs up and restores SecurityDescriptors for files and folders on Windows which includes owner, group, discretionary access control list (DACL) and system access control list (SACL).

    This requires the user to be a member of backup operators or the application must be run as admin. If that is not the case, only the current user's owner, group and DACL will be backed up, and during restore only the DACL of the backed up file will be restored, with the current user's owner and group being set on the restored file.

    #4708

    Enhancement #4733: Allow specifying --host via environment variable

    Restic commands that operate on snapshots, such as restic backup and restic snapshots, support the --host option to specify the hostname for grouping snapshots.

    Such commands now also support specifying the hostname via the environment variable RESTIC_HOST. Note that --host still takes precedence over the environment variable.

    #4733 #4734

    Enhancement #4737: Include snapshot ID in reason field of forget JSON output

    The JSON output of the forget command now includes id and short_id of snapshots in the reason field.

    #4737

    Enhancement #4764: Support forgetting all snapshots

    The forget command now supports the --unsafe-allow-remove-all option, which removes all snapshots in the repository.

    This option must always be combined with a snapshot filter (by host, path or tag). For example, the command forget --tag example --unsafe-allow-remove-all removes all snapshots with the tag "example".

    #4764

    Enhancement #4768: Allow specifying custom User-Agent for outgoing requests

    Restic now supports setting a custom User-Agent for outgoing HTTP requests using the global option --http-user-agent or the RESTIC_HTTP_USER_AGENT environment variable.

    #4768 #4810

    Enhancement #4781: Add restore options to read include/exclude patterns from files

    Restic now supports reading include and exclude patterns from files using the --include-file, --exclude-file, --iinclude-file and --iexclude-file options of the restore command.

    #4781 #4811

    Enhancement #4807: Support Extended Attributes on Windows NTFS

    Restic now backs up and restores Extended Attributes for files and folders on Windows NTFS.

    #4807

    Enhancement #4817: Make overwrite behavior of restore customizable

    The restore command now supports an --overwrite option to configure whether already existing files are overwritten. The overwrite behavior can be configured using the following option values:
    --overwrite always (default): Always overwrites already existing files. The restore command will verify the existing file content and only restore mismatching parts to minimize downloads. Updates the metadata of all files.
    --overwrite if-changed: Like always, but speeds up the file content check by assuming that files with matching size and modification time (mtime) are already up to date. In case of a mismatch, the full file content is verified like with always. Updates the metadata of all files.
    --overwrite if-newer: Like always, but only overwrites existing files when the file in the snapshot has a newer modification time (mtime) than the existing file.
    --overwrite never: Never overwrites existing files.

    #4817 #200 #407 #2662 #4837 #4838 #4864 #4921

    Enhancement #4839: Add dry-run support to restore command

    The restore command now supports the --dry-run option to perform a dry run. Pass the --verbose=2 option to see which files would remain unchanged, and which would be updated or freshly restored.

    #4839

    Original source
  • Jul 1, 2024
    • Date parsed from source:
      Jul 1, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.16.5

    restic ships 0.16.5 with a new Azure CLI credential forcing option and updated dependencies, including fixes for potentially vulnerable packages.

    Changelog for restic 0.16.5 (2024-07-01)

    The following sections list the changes in restic 0.16.5 relevant to restic users. The changes are ordered by importance.

    Summary

    Enh #4799: Add option to force use of Azure CLI credential

    Enh #4873: Update dependencies

    Details

    Enhancement #4799: Add option to force use of Azure CLI credential

    A new environment variable AZURE_FORCE_CLI_CREDENTIAL=true allows forcing the use of Azure CLI credential, ignoring other credentials like managed identity.

    #4799

    Enhancement #4873: Update dependencies

    A few potentially vulnerable dependencies were updated.

    #4873 #4878

    Original source
  • Feb 7, 2024
    • Date parsed from source:
      Feb 7, 2024
    • First seen by Releasebot:
      Jul 18, 2026
    restic logo

    restic

    restic 0.16.4

    restic fixes a rare max-compression data corruption issue and adds extra verification of data integrity before upload. The update improves backup safety for affected users, with optional checks and a fallback to reduce verification overhead if needed.

    Changelog for restic 0.16.4 (2024-02-04)

    The following sections list the changes in restic 0.16.4 relevant to restic users. The changes are ordered by importance.

    Summary

    Fix #4677: Downgrade zstd library to fix rare data corruption at max. compression

    Enh #4529: Add extra verification of data integrity before upload

    Details

    Bugfix #4677: Downgrade zstd library to fix rare data corruption at max. compression

    In restic 0.16.3, backups where the compression level was set to max (using --compression max) could in rare and very specific circumstances result in data corruption due to a bug in the library used for compressing data. Restic 0.16.1 and 0.16.2 were not affected.

    Restic now uses the previous version of the library used to compress data, the same version used by restic 0.16.2. Please note that the auto compression level (which restic uses by default) was never affected, and even if you used max compression, chances of being affected by this issue are small.

    To check a repository for any corruption, run restic check --read-data. This will download and verify the whole repository and can be used at any time to completely verify the integrity of a repository. If the check command detects anomalies, follow the suggested steps.

    #4677 #4679

    Enhancement #4529: Add extra verification of data integrity before upload

    Hardware issues, or a bug in restic or its dependencies, could previously cause corruption in the files restic created and stored in the repository. Detecting such corruption previously required explicitly running the check --read-data or check --read-data-subset commands.

    To further ensure data integrity, even in the case of hardware issues or software bugs, restic now performs additional verification of the files about to be uploaded to the repository.

    These extra checks will increase CPU usage during backups. They can therefore, if absolutely necessary, be disabled using the --no-extra-verify global option. Please note that this should be combined with more active checking using the previously mentioned check commands.

    #4529 #4681

    Original source

This is the end. You've seen all the release notes in this feed!

Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.

Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.