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 WindowsOn 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 usingC:\
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 upC:
, use the following command:restic restore 12345678:/C/C:./ --target output/folder
-
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.
-
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.
-
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
andrewrite
. This is now resolved. -
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.
-
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.
-
Bugfix #4975: Prevent
backup --stdin-from-command
from panickingRestic would previously crash if
--stdin-from-command
was specified without providing a command. This issue has now been fixed. -
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.
-
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.
-
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 <lock/1234567890>
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.
-
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: <details about error>
-
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. -
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.
-
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. -
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.
-
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.