restic v0.9.5 Release Notes

Release Date: 2019-04-23 // 7 months ago
  • ⚡️ We're very pleased to present you restic 0.9.5! restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum. If you already have restic >= 0.9.3, you can use restic self-update to get the latest version in a secure way.

    📚 The binaries released with each restic version are reproducible, which means that you can easily reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.

    🔄 Changelog for restic 0.9.5 (2019-04-23)

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

    Summary

    • 🛠 Fix #2135: Return error when no bytes could be read from stdin
    • 🛠 Fix #2181: Don't cancel timeout after 30 seconds for self-update
    • 🛠 Fix #2203: Fix reading passwords from stdin
    • 🛠 Fix #2224: Don't abort the find command when a tree can't be loaded
    • Enh #1895: Add case insensitive include & exclude options
    • 👍 Enh #1937: Support streaming JSON output for backup
    • Enh #2155: Add Openstack application credential auth for Swift
    • 👍 Enh #2184: Add --json support to forget command
    • Enh #2037: Add group-by option to snapshots command
    • Enh #2124: Ability to dump folders to tar via stdout
    • Enh #2139: Return error if no bytes could be read for backup --stdin
    • Enh #2205: Add --ignore-inode option to backup cmd
    • Enh #2220: Add config option to set S3 storage class

    Details

    🛠 Bugfix #2135: Return error when no bytes could be read from stdin

    📚 We assume that users reading backup data from stdin want to know when no data could be read, so now restic returns an error when backup --stdin is called but no bytes could be read. Usually, this means that an earlier command in a pipe has failed. The documentation was amended and now recommends setting the pipefail option (set -o pipefail).

    #2135 #2139

    🛠 Bugfix #2181: Don't cancel timeout after 30 seconds for self-update

    #2181

    🛠 Bugfix #2203: Fix reading passwords from stdin

    Passwords for the init, key add, and key passwd commands can now be read from non-terminal stdin.

    #2203

    🛠 Bugfix #2224: Don't abort the find command when a tree can't be loaded

    🔄 Change the find command so that missing trees don't result in a crash. Instead, the error is logged to the debug log, and the tree ID is displayed along with the snapshot it belongs to. This makes it possible to recover repositories that are missing trees by forgetting the snapshots they are used in.

    #2224

    ✨ Enhancement #1895: Add case insensitive include & exclude options

    ⏪ The backup and restore commands now have --iexclude and --iinclude flags as case insensitive variants of --exclude and --include.

    #1895 #2032

    ✨ Enhancement #1937: Support streaming JSON output for backup

    👍 We've added support for getting machine-readable status output during backup, just pass the flag --json for restic backup and restic will output a stream of JSON objects which contain the current progress.

    #1937 #1944

    ✨ Enhancement #2155: Add Openstack application credential auth for Swift

    👍 Since Openstack Queens Identity (auth V3) service supports an application credential auth method. It allows to create a technical account with the limited roles. This commit adds an application credential authentication method for the Swift backend.

    #2155

    ✨ Enhancement #2184: Add --json support to forget command

    🚚 The forget command now supports the --json argument, outputting the information about what is (or would-be) kept and removed from the repository.

    #2184 #2185

    ✨ Enhancement #2037: Add group-by option to snapshots command

    0️⃣ We have added an option to group the output of the snapshots command, similar to the output of the forget command. The option has been called "--group-by" and accepts any combination of the values "host", "paths" and "tags", separated by commas. Default behavior (not specifying --group-by) has not been changed. We have added support of the grouping to the JSON output.

    #2037 #2087

    ✨ Enhancement #2124: Ability to dump folders to tar via stdout

    We've added the ability to dump whole folders to stdout via the dump command. Restic now requires at least Go 1.10 due to a limitation of the standard library for Go <= 1.9.

    #2123 #2124

    ✨ Enhancement #2139: Return error if no bytes could be read for backup --stdin

    When restic is used to backup the output of a program, like mysqldump | restic backup --stdin, it now returns an error if no bytes could be read at all. This catches the failure case when mysqldump failed for some reason and did not output any data to stdout.

    #2139

    ✨ Enhancement #2205: Add --ignore-inode option to backup cmd

    🛠 This option handles backup of virtual filesystems that do not keep fixed inodes for files, like Fuse-based, pCloud, etc. Ignoring inode changes allows to consider the file as unchanged if last modification date and size are unchanged.

    #1631 #2205 #2047

    ✨ Enhancement #2220: Add config option to set S3 storage class

    The s3.storage-class option can be passed to restic (using -o) to specify the storage class to be used for S3 objects created by restic.

    The storage class is passed as-is to S3, so it needs to be understood by the API. On AWS, it can be one of STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING and REDUCED_REDUNDANCY. If unspecified, the default storage class is used (STANDARD on AWS).

    You can mix storage classes in the same bucket, and the setting isn't stored in the restic repository, so be sure to specify it with each command that writes to S3.

    #706 #2220


Previous changes from v0.9.4

  • We're very pleased to present you restic 0.9.4! restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum.

    📚 The binaries released with each restic version are reproducible, which means that you can easily reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.

    🔄 Changelog for restic 0.9.4 (2019-01-06)

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

    Summary

    • 🛠 Fix #1989: Google Cloud Storage: Respect bandwidth limit
    • 🛠 Fix #2040: Add host name filter shorthand flag for stats command
    • 🛠 Fix #2068: Correctly return error loading data
    • 🛠 Fix #2095: Consistently use local time for snapshots times
    • ⏪ Enh #1605: Concurrent restore
    • Enh #2089: Increase granularity of the "keep within" retention policy
    • Enh #2097: Add key hinting
    • Enh #2017: Mount: Enforce FUSE Unix permissions with allow-other
    • Enh #2070: Make all commands display timestamps in local time
    • Enh #2085: Allow --files-from to be specified multiple times
    • Enh #2094: Run command to get password

    Details

    🛠 Bugfix #1989: Google Cloud Storage: Respect bandwidth limit

    🔧 The GCS backend did not respect the bandwidth limit configured, a previous commit accidentally removed support for it.

    #1989 #2100

    🛠 Bugfix #2040: Add host name filter shorthand flag for stats command

    ✅ The default value for --host flag was set to 'H' (the shorthand version of the flag), this caused the lookup for the latest snapshot to fail.

    ➕ Add shorthand flag -H for --host (with empty default so if these flags are not specified the latest snapshot will not filter by host name).

    Also add shorthand -H for backup command.

    #2040

    🛠 Bugfix #2068: Correctly return error loading data

    In one case during prune and check, an error loading data from the backend is not returned properly. This is now corrected.

    #1999 #2068

    🛠 Bugfix #2095: Consistently use local time for snapshots times

    0️⃣ By default snapshots created with restic backup were set to local time, but when the --time flag was used the provided timestamp was parsed as UTC. With this change all snapshots times are set to local time.

    #2095

    ✨ Enhancement #1605: Concurrent restore

    🐎 This change significantly improves restore performance, especially when using high-latency remote repositories like B2.

    ⏪ The implementation now uses several concurrent threads to download and process multiple remote files concurrently. To further reduce restore time, each remote file is downloaded using a single repository request.

    #1605 #1719

    ✨ Enhancement #2089: Increase granularity of the "keep within" retention policy

    ✅ The keep-within option of the forget command now accepts time ranges with an hourly granularity. For example, running restic forget --keep-within 3d12h will keep all the snapshots made within three days and twelve hours from the time of the latest snapshot.

    #2089 #2090

    ✨ Enhancement #2097: Add key hinting

    Added a new option --key-hint and corresponding environment variable RESTIC_KEY_HINT. The key hint is a key ID to try decrypting first, before other keys in the repository.

    This change will benefit repositories with many keys; if the correct key hint is supplied then restic only needs to check one key. If the key hint is incorrect (the key does not exist, or the password is incorrect) then restic will check all keys, as usual.

    #2097

    ✨ Enhancement #2017: Mount: Enforce FUSE Unix permissions with allow-other

    0️⃣ The fuse mount (restic mount) now lets the kernel check the permissions of the files within snapshots (this is done through the DefaultPermissions FUSE option) when the option --allow-other is specified.

    ⏪ To restore the old behavior, we've added the --no-default-permissions option. This allows all users that have access to the mount point to access all files within the snapshots.

    #2017

    ✨ Enhancement #2070: Make all commands display timestamps in local time

    🖨 Restic used to drop the timezone information from displayed timestamps, it now converts timestamps to local time before printing them so the times can be easily compared to.

    #2070

    ✨ Enhancement #2085: Allow --files-from to be specified multiple times

    Before, restic took only the last file specified with --files-from into account, this is now corrected.

    #2085 #2086

    ✨ Enhancement #2094: Run command to get password

    We've added the --password-command option which allows specifying a command that restic runs every time the password for the repository is needed, so it can be integrated with a password manager or keyring. The option can also be set via the environment variable $RESTIC_PASSWORD_COMMAND.

    #2094