Skip to content

restic 0.17.1

Latest
Compare
Choose a tag to compare
@fd0 fd0 released this 05 Sep 19:41
· 152 commits to master since this release
v0.17.1

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

    #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: <details about error>
    

    #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