restic v0.8.2 Release Notes

Release Date: 2018-02-17 // about 6 years ago
  • We're very pleased to announce restic 0.8.2! 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 are contained in the builder repository.

    ๐Ÿ”„ Changelog for restic 0.8.2 (2018-02-17)

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

    Summary

    • ๐Ÿ›  Fix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends
    • ๐Ÿ›  Fix #1512: Restore directory permissions as the last step
    • ๐Ÿ›  Fix #1528: Correctly create missing subdirs in data/
    • ๐Ÿ›  Fix #1590: Strip spaces for lines read via --files-from
    • ๐Ÿ›  Fix #1589: Complete intermediate index upload
    • ๐Ÿ›  Fix #1594: Google Cloud Storage: Use generic HTTP transport
    • ๐Ÿ›  Fix #1595: Backup: Remove bandwidth display
    • ๐Ÿ‘ Enh #1522: Add support for TLS client certificate authentication
    • Enh #1541: Reduce number of remote requests during repository check
    • Enh #1567: Reduce number of backend requests for rebuild-index and prune
    • Enh #1507: Only reload snapshots once per minute for fuse mount
    • Enh #1538: Reduce memory allocations for querying the index
    • Enh #1549: Speed up querying across indices and scanning existing files
    • Enh #1554: Fuse/mount: Correctly handle EOF, add template option
    • Enh #1564: Don't terminate ssh on SIGINT
    • Enh #1579: Retry Backend.List() in case of errors
    • Enh #1584: Limit index file size

    Details

    ๐Ÿ›  Bugfix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends

    #1506 #1511

    ๐Ÿ›  Bugfix #1512: Restore directory permissions as the last step

    โช This change allows restoring into directories that were not writable during backup. Before, restic created the directory, set the read-only mode and then failed to create files in the directory. This change now restores the directory (with its permissions) as the very last step.

    #1512 #1536

    ๐Ÿ›  Bugfix #1528: Correctly create missing subdirs in data/

    #1528 #1529

    ๐Ÿ›  Bugfix #1590: Strip spaces for lines read via --files-from

    Leading and trailing spaces in lines read via --files-from are now stripped, so it behaves the same as with lines read via --exclude-file.

    #1590 #1613

    ๐Ÿ›  Bugfix #1589: Complete intermediate index upload

    After a user posted a comprehensive report of what he observed, we were able to find a bug and correct it: During backup, restic uploads so-called "intermediate" index files. When the backup finishes during a transfer of such an intermediate index, the upload is cancelled, but the backup is finished without an error. This leads to an inconsistent state, where the snapshot references data that is contained in the repo, but is not referenced in any index.

    ๐Ÿ— The situation can be resolved by building a new index with rebuild-index, but looks very confusing at first. Since all the data got uploaded to the repo successfully, there was no risk of data loss, just minor inconvenience for our users.

    #1589

    ๐Ÿ›  Bugfix #1594: Google Cloud Storage: Use generic HTTP transport

    It was discovered that the Google Cloud Storage backend did not use the generic HTTP transport, so things such as bandwidth limiting with --limit-upload did not work. This is resolved now.

    #1594

    ๐Ÿ›  Bugfix #1595: Backup: Remove bandwidth display

    ๐Ÿšš This commit removes the bandwidth displayed during backup process. It is misleading and seldomly correct, because it's neither the "read bandwidth" (only for the very first backup) nor the "upload bandwidth". Many users are confused about (and rightly so), c.f. #1581, #1033, #1591

    We'll eventually replace this display with something more relevant when the new archiver code is ready.

    #1595

    โœจ Enhancement #1522: Add support for TLS client certificate authentication

    ๐Ÿ‘Œ Support has been added for using a TLS client certificate for authentication to HTTP based backend. A file containing the PEM encoded private key and certificate can be set using the --tls-client-cert option.

    #1522 #1524

    โœจ Enhancement #1541: Reduce number of remote requests during repository check

    This change eliminates redundant remote repository calls and significantly improves repository check time.

    #1541 #1548

    โœจ Enhancement #1567: Reduce number of backend requests for rebuild-index and prune

    ๐Ÿšค We've found a way to reduce then number of backend requests for the rebuild-index and prune operations. This significantly speeds up the operations for high-latency backends.

    #1567 #1574 #1575

    โœจ Enhancement #1507: Only reload snapshots once per minute for fuse mount

    #1507

    โœจ Enhancement #1538: Reduce memory allocations for querying the index

    This change reduces the internal memory allocations when the index data structures in memory are queried if a blob (part of a file) already exists in the repo. It should speed up backup a bit, and maybe even reduce RAM usage.

    #1538

    โœจ Enhancement #1549: Speed up querying across indices and scanning existing files

    This change increases the whenever a blob (part of a file) is searched for in a restic repository. This will reduce cpu usage some when backing up files already backed up by restic. Cpu usage is further decreased when scanning files.

    #1549

    โœจ Enhancement #1554: Fuse/mount: Correctly handle EOF, add template option

    We've added the --snapshot-template string, which can be used to specify a template for a snapshot directory. In addition, accessing data after the end of a file via the fuse mount is now handled correctly.

    #1554

    โœจ Enhancement #1564: Don't terminate ssh on SIGINT

    ๐Ÿ”’ We've reworked the code which runs the ssh login for the sftp backend so that it can prompt for a password (if needed) but does not exit when the user presses CTRL+C (SIGINT) e.g. during backup. This allows restic to properly shut down when it receives SIGINT and remove the lock file from the repo, afterwards exiting the ssh process.

    #1564 #1588

    โœจ Enhancement #1579: Retry Backend.List() in case of errors

    #1579

    โœจ Enhancement #1584: Limit index file size

    Before, restic would create a single new index file on prune or rebuild-index, this may lead to memory problems when this huge index is created and loaded again. We're now limiting the size of the index file, and split newly created index files into several smaller ones. This allows restic to be more memory-efficient.

    #1412 #979 #526 #1584