All Versions
13
Latest Version
Avg Release Cycle
90 days
Latest Release
1266 days ago

Changelog History
Page 2

  • v0.8.2 Changes

    February 17, 2018

    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

  • v0.8.1 Changes

    December 27, 2017

    We're very pleased to announce restic 0.8.1! 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.1 (2017-12-27)

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

    Summary

    • 🛠 Fix #1457: Improve s3 backend with DigitalOcean Spaces
    • 🛠 Fix #1454: Correct cache dir location for Windows and Darwin
    • 🛠 Fix #1459: Disable handling SIGPIPE
    • 0️⃣ Chg #1452: Do not save atime by default
    • Enh #1436: Add code to detect old cache directories
    • Enh #1439: Improve cancellation logic
    • Enh #11: Add the diff command

    Details

    🛠 Bugfix #1457: Improve s3 backend with DigitalOcean Spaces

    #1457 #1459

    🛠 Bugfix #1454: Correct cache dir location for Windows and Darwin

    🏁 The cache directory on Windows and Darwin was not correct, instead the directory .cache was used.

    #1454

    🛠 Bugfix #1459: Disable handling SIGPIPE

    We've disabled handling SIGPIPE again. Turns out, writing to broken TCP connections also raised SIGPIPE, so restic exits on the first write to a broken connection. Instead, restic should retry the request.

    #1457 #1466 #1459

    🔄 Change #1452: Do not save atime by default

    📇 By default, the access time for files and dirs is not saved any more. It is not possible to reliably disable updating the access time during a backup, so for the next backup the access time is different again. This means a lot of metadata is saved. If you want to save the access time anyway, pass --with-atime to the backup command.

    #1452

    ✨ Enhancement #1436: Add code to detect old cache directories

    🚚 We've added code to detect old cache directories of repositories that haven't been used in a long time, restic now prints a note when it detects that such dirs exist. Also, the option --cleanup-cache was added to automatically remove such directories. That's not a problem because the cache will be rebuild once a repo is accessed again.

    #1436

    ✨ Enhancement #1439: Improve cancellation logic

    The cancellation logic was improved, restic can now shut down cleanly when requested to do so (e.g. via ctrl+c).

    #1439

    ✨ Enhancement #11: Add the diff command

    The command diff was added, it allows comparing two snapshots and listing all differences.

    #11 #1460 #1462

  • v0.8.0 Changes

    November 26, 2017

    We're very pleased to announce restic 0.8.0! 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.

    Important Changes in 0.8.0

    ⬆️ A vulnerability was found in the restic restorer, which allowed attackers in special circumstances to restore files to a location outside of the target directory. Due to the circumstances we estimate this to be a low-risk vulnerability, but urge all users to upgrade to the latest version of restic.

    🐧 Exploiting the vulnerability requires a Linux/Unix system which saves backups via restic and a Windows system which restores files from the repo. In addition, the attackers need to be able to create files with arbitrary names which are then saved to the restic repo. For example, by creating a file named "..\test.txt" (which is a perfectly legal filename on Linux) and restoring a snapshot containing this file on Windows, it would be written to the parent of the target directory.

    We'd like to thank Tyler Spivey for reporting this responsibly!
    #1445

    0️⃣ The s3 backend used the subdir restic within a bucket if no explicit path after the bucket name was specified. Since this version, restic does not use this default path any more. If you created a repo on s3 in a bucket without specifying a path within the bucket, you need to add /restic at the end of the repository specification to access your repo: s3:s3.amazonaws.com/bucket/restic #1292 #1437

    📇 We've added a local cache for metadata so that restic doesn't need to load all metadata (snapshots, indexes, ...) from the repo each time it starts. By default the cache is active, but there's a new global option --no-cache that can be used to disable the cache. By deafult, the cache a standard cache folder for the OS, which can be overridden with --cache-dir. The cache will automatically populate, indexes and snapshots are saved as they are loaded. #1040 #29 #738 #282 #1287

    📇 A related change was to by default create pack files in the repo that contain either data or metadata, not both mixed together. This allows easy caching of only the metadata files. The next run of restic prune will untangle mixed files automatically. #1265

    The Google Cloud Storage backend no longer requires the service account to have the storage.buckets.get permission ("Storage Admin" role) in restic init if the bucket already exists. #1281

    ➕ Added support for rate limiting through --limit-upload and --limit-download flags. #1216 #1336 #1358

    Failed backend requests are now automatically retried. #1353

    ⏪ We've added the dump command which prints a file from a snapshot to stdout. This can e.g. be used to restore files read with backup --stdin. #510 #1346

    Small changes

    ✅ The directory structure in the fuse mount now exposes a symlink latest which points to the latest snapshot in that particular directory. #1249

    The option --compact was added to the forget command to provide the same compact view as the snapshots command. #1269

    ↪ We've re-enabled a workaround for minio-go (the library we're using to access s3 backends), this reduces memory usage. #1256 #1267

    The sftp backend now prompts for the password if a password is necessary for login. #448 #1270

    🚀 The generate command has been added, which replaces the now removed commands manpage and autocomplete. This release of restic contains the most recent manpages in doc/man and the auto-completion files for bash and zsh in doc/bash-completion.sh and doc/zsh-completion.zsh #1274 #1282

    A bug was discovered in the library we're using to access Backblaze, it now reuses already established TCP connections which should be a lot faster and not cause network failures any more. #1291 #1301

    Another bug in the forget command caused prune not to be run when --prune was specified without a policy, e.g. when only snapshot IDs that should be forgotten are listed manually. This is corrected now. #1317

    🖨 The check command now explicetly prints No errors were found when no errors could be found. #1319 #1303

    The fuse mount now has an ids subdirectory which contains the snapshots below their (short) IDs. #1102 #1299 #1320

    The backup command was improved, it now caches the result of excludes for a directory. #1271 #1326

    We've added the --cacert option which can be used to pass one (or more) CA certificates to restic. These are used in addition to the system CA certificates to verify HTTPS certificates (e.g. for the REST backend). #1114 #1276

    When the list of files/dirs to be saved is read from a file with --files-from, comment lines (starting with #) are now ignored. #1367 #1368