restic v0.9.3 Release Notes

Release Date: 2018-10-13 // over 5 years ago
  • We're very pleased to announce restic 0.9.3! 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.3 (2018-10-13)

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

    Summary

    • ๐Ÿ›  Fix #1935: Remove truncated files from cache
    • ๐Ÿ›  Fix #1978: Do not return an error when the scanner is faster than backup
    • โช Enh #1766: Restore: suppress lchown errors when not running as root
    • Enh #1909: Reject files/dirs by name first
    • Enh #1940: Add directory filter to ls command
    • Enh #1967: Use --host everywhere
    • Enh #2028: Display size of cache directories
    • Enh #1777: Improve the find command
    • Enh #1876: Display reason why forget keeps snapshots
    • Enh #1891: Accept glob in paths loaded via --files-from
    • Enh #1920: Vendor dependencies with Go 1.11 Modules
    • โšก๏ธ Enh #1949: Add new command self-update
    • ๐Ÿ‘ Enh #1953: Ls: Add JSON output support for restic ls cmd

    Details

    ๐Ÿ›  Bugfix #1935: Remove truncated files from cache

    ๐Ÿšš When a file in the local cache is truncated, and restic tries to access data beyond the end of the (cached) file, it used to return an error "EOF". This is now fixed, such truncated files are removed and the data is fetched directly from the backend.

    #1935

    ๐Ÿ›  Bugfix #1978: Do not return an error when the scanner is faster than backup

    ๐Ÿ–จ When restic makes a backup, there's a background task called "scanner" which collects information on how many files and directories are to be saved, in order to display progress information to the user. When the backup finishes faster than the scanner, it is aborted because the result is not needed any more. This logic contained a bug, where quitting the scanner process was treated as an error, and caused restic to print an unhelpful error message ("context canceled").

    #1978 #1991

    โœจ Enhancement #1766: Restore: suppress lchown errors when not running as root

    ๐Ÿ Like "cp" and "rsync" do, restic now only reports errors for changing the ownership of files during restore if it is run ๏ฟผas root, on non-Windows operating systems. On Windows, the error is reported as usual.

    #1766

    โœจ Enhancement #1909: Reject files/dirs by name first

    The current scanner/archiver code had an architectural limitation: it always ran the lstat() system call on all files and directories before a decision to include/exclude the file/dir was made. This lead to a lot of unnecessary system calls for items that could have been rejected by their name or path only.

    We've changed the archiver/scanner implementation so that it now first rejects by name/path, and only runs the system call on the remaining items. This reduces the number of lstat() system calls a lot (depending on the exclude settings).

    #1909 #1912

    โœจ Enhancement #1940: Add directory filter to ls command

    The ls command can now be filtered by directories, so that only files in the given directories will be shown. If the --recursive flag is specified, then ls will traverse subfolders and list their files as well.

    It used to be possible to specify multiple snapshots, but that has been replaced by only one snapshot and the possibility of specifying multiple directories.

    Specifying directories constrains the walk, which can significantly speed up the listing.

    #1940 #1941

    โœจ Enhancement #1967: Use --host everywhere

    ๐Ÿ—„ We now use the flag --host for all commands which need a host name, using --hostname (e.g. for restic backup) still works, but will print a deprecation warning. Also, add the short option -H where possible.

    #1967

    โœจ Enhancement #2028: Display size of cache directories

    0๏ธโƒฃ The cache command now by default shows the size of the individual cache directories. It can be disabled with --no-size.

    #2028 #2033

    โœจ Enhancement #1777: Improve the find command

    โšก๏ธ We've updated the find command to support multiple patterns.

    restic find is now able to list the snapshots containing a specific tree or blob, or even the snapshots that contain blobs belonging to a given pack. A list of IDs can be given, as long as they all have the same type.

    The command find can also display the pack IDs the blobs belong to, if the --show-pack-id flag is provided.

    #1777 #1780

    โœจ Enhancement #1876: Display reason why forget keeps snapshots

    We've added a column to the list of snapshots forget keeps which details the reasons to keep a particuliar snapshot. This makes debugging policies for forget much easier. Please remember to always try things out with --dry-run!

    #1876

    โœจ Enhancement #1891: Accept glob in paths loaded via --files-from

    ๐Ÿ’ป Before that, behaviour was different if paths were appended to command line or from a file, because wild card characters were expanded by shell if appended to command line, but not expanded if loaded from file.

    #1891

    โœจ Enhancement #1920: Vendor dependencies with Go 1.11 Modules

    ๐Ÿ— Until now, we've used dep for managing dependencies, we've now switch to using Go modules. For users this does not change much, only if you want to compile restic without downloading anything with Go 1.11, then you need to run: go build -mod=vendor build.go

    #1920

    โœจ Enhancement #1949: Add new command self-update

    ๐Ÿš€ We have added a new command called self-update which downloads the latest released version of restic from GitHub and replaces the current binary with it. It does not rely on any external program (so it'll work everywhere), but still verifies the GPG signature using the embedded GPG public key.

    ๐Ÿš€ By default, the self-update command is hidden behind the selfupdate built tag, which is only set when restic is built using build.go (including official releases). The reason for this is that downstream distributions will then not include the command by default, so users are encouraged to use the platform-specific distribution mechanism.

    #1949

    โœจ Enhancement #1953: Ls: Add JSON output support for restic ls cmd

    We've implemented listing files in the repository with JSON as output, just pass --json as an option to restic ls. This makes the output of the command machine readable.

    #1953