github.com/mckael/restic@v0.8.3/CHANGELOG.md (about)

     1  Changelog for restic 0.8.3 (2018-02-26)
     2  =======================================
     3  
     4  The following sections list the changes in restic 0.8.3 relevant to
     5  restic users. The changes are ordered by importance.
     6  
     7  Summary
     8  -------
     9  
    10   * Fix #1633: Fixed unexpected 'pack file cannot be listed' error
    11   * Fix #1641: Ignore files with invalid names in the repo
    12   * Fix #1638: Handle errors listing files in the backend
    13   * Enh #1497: Add --read-data-subset flag to check command
    14   * Enh #1560: Retry all repository file download errors
    15   * Enh #1623: Don't check for presence of files in the backend before writing
    16   * Enh #1634: Upgrade B2 client library, reduce HTTP requests
    17  
    18  Details
    19  -------
    20  
    21   * Bugfix #1633: Fixed unexpected 'pack file cannot be listed' error
    22  
    23     Due to a regression introduced in 0.8.2, the `rebuild-index` and `prune` commands failed to
    24     read pack files with size of 587, 588, 589 or 590 bytes.
    25  
    26     https://github.com/restic/restic/issues/1633
    27     https://github.com/restic/restic/pull/1635
    28  
    29   * Bugfix #1641: Ignore files with invalid names in the repo
    30  
    31     The release 0.8.2 introduced a bug: when restic encounters files in the repo which do not have a
    32     valid name, it tries to load a file with a name of lots of zeroes instead of ignoring it. This is now
    33     resolved, invalid file names are just ignored.
    34  
    35     https://github.com/restic/restic/issues/1641
    36     https://github.com/restic/restic/pull/1643
    37  
    38   * Bugfix #1638: Handle errors listing files in the backend
    39  
    40     A user reported in the forum that restic completes a backup although a concurrent `prune`
    41     operation was running. A few error messages were printed, but the backup was attempted and
    42     completed successfully. No error code was returned.
    43  
    44     This should not happen: The repository is exclusively locked during `prune`, so when `restic
    45     backup` is run in parallel, it should abort and return an error code instead.
    46  
    47     It was found that the bug was in the code introduced only recently, which retries a List()
    48     operation on the backend should that fail. It is now corrected.
    49  
    50     https://github.com/restic/restic/pull/1638
    51  
    52   * Enhancement #1497: Add --read-data-subset flag to check command
    53  
    54     This change introduces ability to check integrity of a subset of repository data packs. This
    55     can be used to spread integrity check of larger repositories over a period of time.
    56  
    57     https://github.com/restic/restic/issues/1497
    58     https://github.com/restic/restic/pull/1556
    59  
    60   * Enhancement #1560: Retry all repository file download errors
    61  
    62     Restic will now retry failed downloads, similar to other operations.
    63  
    64     https://github.com/restic/restic/pull/1560
    65  
    66   * Enhancement #1623: Don't check for presence of files in the backend before writing
    67  
    68     Before, all backend implementations were required to return an error if the file that is to be
    69     written already exists in the backend. For most backends, that means making a request (e.g. via
    70     HTTP) and returning an error when the file already exists.
    71  
    72     This is not accurate, the file could have been created between the HTTP request testing for it,
    73     and when writing starts, so we've relaxed this requeriment, which saves one additional HTTP
    74     request per newly added file.
    75  
    76     https://github.com/restic/restic/pull/1623
    77  
    78   * Enhancement #1634: Upgrade B2 client library, reduce HTTP requests
    79  
    80     We've upgraded the B2 client library restic uses to access BackBlaze B2. This reduces the
    81     number of HTTP requests needed to upload a new file from two to one, which should improve
    82     throughput to B2.
    83  
    84     https://github.com/restic/restic/pull/1634
    85  
    86  
    87  Changelog for restic 0.8.2 (2018-02-17)
    88  =======================================
    89  
    90  The following sections list the changes in restic 0.8.2 relevant to
    91  restic users. The changes are ordered by importance.
    92  
    93  Summary
    94  -------
    95  
    96   * Fix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends
    97   * Fix #1512: Restore directory permissions as the last step
    98   * Fix #1528: Correctly create missing subdirs in data/
    99   * Fix #1590: Strip spaces for lines read via --files-from
   100   * Fix #1589: Complete intermediate index upload
   101   * Fix #1594: Google Cloud Storage: Use generic HTTP transport
   102   * Fix #1595: Backup: Remove bandwidth display
   103   * Enh #1522: Add support for TLS client certificate authentication
   104   * Enh #1541: Reduce number of remote requests during repository check
   105   * Enh #1567: Reduce number of backend requests for rebuild-index and prune
   106   * Enh #1507: Only reload snapshots once per minute for fuse mount
   107   * Enh #1538: Reduce memory allocations for querying the index
   108   * Enh #1549: Speed up querying across indices and scanning existing files
   109   * Enh #1554: Fuse/mount: Correctly handle EOF, add template option
   110   * Enh #1564: Don't terminate ssh on SIGINT
   111   * Enh #1579: Retry Backend.List() in case of errors
   112   * Enh #1584: Limit index file size
   113  
   114  Details
   115  -------
   116  
   117   * Bugfix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends
   118  
   119     https://github.com/restic/restic/issues/1506
   120     https://github.com/restic/restic/pull/1511
   121  
   122   * Bugfix #1512: Restore directory permissions as the last step
   123  
   124     This change allows restoring into directories that were not writable during backup. Before,
   125     restic created the directory, set the read-only mode and then failed to create files in the
   126     directory. This change now restores the directory (with its permissions) as the very last
   127     step.
   128  
   129     https://github.com/restic/restic/issues/1512
   130     https://github.com/restic/restic/pull/1536
   131  
   132   * Bugfix #1528: Correctly create missing subdirs in data/
   133  
   134     https://github.com/restic/restic/issues/1528
   135     https://github.com/restic/restic/pull/1529
   136  
   137   * Bugfix #1590: Strip spaces for lines read via --files-from
   138  
   139     Leading and trailing spaces in lines read via `--files-from` are now stripped, so it behaves
   140     the same as with lines read via `--exclude-file`.
   141  
   142     https://github.com/restic/restic/issues/1590
   143     https://github.com/restic/restic/pull/1613
   144  
   145   * Bugfix #1589: Complete intermediate index upload
   146  
   147     After a user posted a comprehensive report of what he observed, we were able to find a bug and
   148     correct it: During backup, restic uploads so-called "intermediate" index files. When the
   149     backup finishes during a transfer of such an intermediate index, the upload is cancelled, but
   150     the backup is finished without an error. This leads to an inconsistent state, where the
   151     snapshot references data that is contained in the repo, but is not referenced in any index.
   152  
   153     The situation can be resolved by building a new index with `rebuild-index`, but looks very
   154     confusing at first. Since all the data got uploaded to the repo successfully, there was no risk
   155     of data loss, just minor inconvenience for our users.
   156  
   157     https://github.com/restic/restic/pull/1589
   158  
   159   * Bugfix #1594: Google Cloud Storage: Use generic HTTP transport
   160  
   161     It was discovered that the Google Cloud Storage backend did not use the generic HTTP transport,
   162     so things such as bandwidth limiting with `--limit-upload` did not work. This is resolved now.
   163  
   164     https://github.com/restic/restic/pull/1594
   165  
   166   * Bugfix #1595: Backup: Remove bandwidth display
   167  
   168     This commit removes the bandwidth displayed during backup process. It is misleading and
   169     seldomly correct, because it's neither the "read bandwidth" (only for the very first backup)
   170     nor the "upload bandwidth". Many users are confused about (and rightly so), c.f. #1581, #1033,
   171     #1591
   172  
   173     We'll eventually replace this display with something more relevant when the new archiver code
   174     is ready.
   175  
   176     https://github.com/restic/restic/pull/1595
   177  
   178   * Enhancement #1522: Add support for TLS client certificate authentication
   179  
   180     Support has been added for using a TLS client certificate for authentication to HTTP based
   181     backend. A file containing the PEM encoded private key and certificate can be set using the
   182     `--tls-client-cert` option.
   183  
   184     https://github.com/restic/restic/issues/1522
   185     https://github.com/restic/restic/pull/1524
   186  
   187   * Enhancement #1541: Reduce number of remote requests during repository check
   188  
   189     This change eliminates redundant remote repository calls and significantly improves
   190     repository check time.
   191  
   192     https://github.com/restic/restic/issues/1541
   193     https://github.com/restic/restic/pull/1548
   194  
   195   * Enhancement #1567: Reduce number of backend requests for rebuild-index and prune
   196  
   197     We've found a way to reduce then number of backend requests for the `rebuild-index` and `prune`
   198     operations. This significantly speeds up the operations for high-latency backends.
   199  
   200     https://github.com/restic/restic/issues/1567
   201     https://github.com/restic/restic/pull/1574
   202     https://github.com/restic/restic/pull/1575
   203  
   204   * Enhancement #1507: Only reload snapshots once per minute for fuse mount
   205  
   206     https://github.com/restic/restic/pull/1507
   207  
   208   * Enhancement #1538: Reduce memory allocations for querying the index
   209  
   210     This change reduces the internal memory allocations when the index data structures in memory
   211     are queried if a blob (part of a file) already exists in the repo. It should speed up backup a bit,
   212     and maybe even reduce RAM usage.
   213  
   214     https://github.com/restic/restic/pull/1538
   215  
   216   * Enhancement #1549: Speed up querying across indices and scanning existing files
   217  
   218     This change increases the whenever a blob (part of a file) is searched for in a restic
   219     repository. This will reduce cpu usage some when backing up files already backed up by restic.
   220     Cpu usage is further decreased when scanning files.
   221  
   222     https://github.com/restic/restic/pull/1549
   223  
   224   * Enhancement #1554: Fuse/mount: Correctly handle EOF, add template option
   225  
   226     We've added the `--snapshot-template` string, which can be used to specify a template for a
   227     snapshot directory. In addition, accessing data after the end of a file via the fuse mount is now
   228     handled correctly.
   229  
   230     https://github.com/restic/restic/pull/1554
   231  
   232   * Enhancement #1564: Don't terminate ssh on SIGINT
   233  
   234     We've reworked the code which runs the `ssh` login for the sftp backend so that it can prompt for a
   235     password (if needed) but does not exit when the user presses CTRL+C (SIGINT) e.g. during
   236     backup. This allows restic to properly shut down when it receives SIGINT and remove the lock
   237     file from the repo, afterwards exiting the `ssh` process.
   238  
   239     https://github.com/restic/restic/pull/1564
   240     https://github.com/restic/restic/pull/1588
   241  
   242   * Enhancement #1579: Retry Backend.List() in case of errors
   243  
   244     https://github.com/restic/restic/pull/1579
   245  
   246   * Enhancement #1584: Limit index file size
   247  
   248     Before, restic would create a single new index file on `prune` or `rebuild-index`, this may
   249     lead to memory problems when this huge index is created and loaded again. We're now limiting the
   250     size of the index file, and split newly created index files into several smaller ones. This
   251     allows restic to be more memory-efficient.
   252  
   253     https://github.com/restic/restic/issues/1412
   254     https://github.com/restic/restic/issues/979
   255     https://github.com/restic/restic/issues/526
   256     https://github.com/restic/restic/pull/1584
   257  
   258  
   259  Changelog for restic 0.8.1 (2017-12-27)
   260  =======================================
   261  
   262  The following sections list the changes in restic 0.8.1 relevant to
   263  restic users. The changes are ordered by importance.
   264  
   265  Summary
   266  -------
   267  
   268   * Fix #1457: Improve s3 backend with DigitalOcean Spaces
   269   * Fix #1454: Correct cache dir location for Windows and Darwin
   270   * Fix #1459: Disable handling SIGPIPE
   271   * Chg #1452: Do not save atime by default
   272   * Enh #1436: Add code to detect old cache directories
   273   * Enh #1439: Improve cancellation logic
   274   * Enh #11: Add the `diff` command
   275  
   276  Details
   277  -------
   278  
   279   * Bugfix #1457: Improve s3 backend with DigitalOcean Spaces
   280  
   281     https://github.com/restic/restic/issues/1457
   282     https://github.com/restic/restic/pull/1459
   283  
   284   * Bugfix #1454: Correct cache dir location for Windows and Darwin
   285  
   286     The cache directory on Windows and Darwin was not correct, instead the directory `.cache` was
   287     used.
   288  
   289     https://github.com/restic/restic/pull/1454
   290  
   291   * Bugfix #1459: Disable handling SIGPIPE
   292  
   293     We've disabled handling SIGPIPE again. Turns out, writing to broken TCP connections also
   294     raised SIGPIPE, so restic exits on the first write to a broken connection. Instead, restic
   295     should retry the request.
   296  
   297     https://github.com/restic/restic/issues/1457
   298     https://github.com/restic/restic/issues/1466
   299     https://github.com/restic/restic/pull/1459
   300  
   301   * Change #1452: Do not save atime by default
   302  
   303     By default, the access time for files and dirs is not saved any more. It is not possible to
   304     reliably disable updating the access time during a backup, so for the next backup the access
   305     time is different again. This means a lot of metadata is saved. If you want to save the access time
   306     anyway, pass `--with-atime` to the `backup` command.
   307  
   308     https://github.com/restic/restic/pull/1452
   309  
   310   * Enhancement #1436: Add code to detect old cache directories
   311  
   312     We've added code to detect old cache directories of repositories that haven't been used in a
   313     long time, restic now prints a note when it detects that such dirs exist. Also, the option
   314     `--cleanup-cache` was added to automatically remove such directories. That's not a problem
   315     because the cache will be rebuild once a repo is accessed again.
   316  
   317     https://github.com/restic/restic/pull/1436
   318  
   319   * Enhancement #1439: Improve cancellation logic
   320  
   321     The cancellation logic was improved, restic can now shut down cleanly when requested to do so
   322     (e.g. via ctrl+c).
   323  
   324     https://github.com/restic/restic/pull/1439
   325  
   326   * Enhancement #11: Add the `diff` command
   327  
   328     The command `diff` was added, it allows comparing two snapshots and listing all differences.
   329  
   330     https://github.com/restic/restic/issues/11
   331     https://github.com/restic/restic/issues/1460
   332     https://github.com/restic/restic/pull/1462
   333  
   334  
   335  Changelog for restic 0.8.0 (2017-11-26)
   336  =======================================
   337  
   338  The following sections list the changes in restic 0.8.0 relevant to
   339  restic users. The changes are ordered by importance.
   340  
   341  Summary
   342  -------
   343  
   344   * Sec #1445: Prevent writing outside the target directory during restore
   345   * Fix #1256: Re-enable workaround for S3 backend
   346   * Fix #1291: Reuse backend TCP connections to BackBlaze B2
   347   * Fix #1317: Run prune when `forget --prune` is called with just snapshot IDs
   348   * Fix #1437: Remove implicit path `/restic` for the s3 backend
   349   * Enh #1102: Add subdirectory `ids` to fuse mount
   350   * Enh #1114: Add `--cacert` to specify TLS certificates to check against
   351   * Enh #1216: Add upload/download limiting
   352   * Enh #1271: Cache results for excludes for `backup`
   353   * Enh #1274: Add `generate` command, replaces `manpage` and `autocomplete`
   354   * Enh #1367: Allow comments in files read from via `--file-from`
   355   * Enh #448: Sftp backend prompts for password
   356   * Enh #510: Add `dump` command
   357   * Enh #1040: Add local metadata cache
   358   * Enh #1249: Add `latest` symlink in fuse mount
   359   * Enh #1269: Add `--compact` to `forget` command
   360   * Enh #1281: Google Cloud Storage backend needs less permissions
   361   * Enh #1319: Make `check` print `no errors found` explicitly
   362   * Enh #1353: Retry failed backend requests
   363  
   364  Details
   365  -------
   366  
   367   * Security #1445: Prevent writing outside the target directory during restore
   368  
   369     A vulnerability was found in the restic restorer, which allowed attackers in special
   370     circumstances to restore files to a location outside of the target directory. Due to the
   371     circumstances we estimate this to be a low-risk vulnerability, but urge all users to upgrade to
   372     the latest version of restic.
   373  
   374     Exploiting the vulnerability requires a Linux/Unix system which saves backups via restic and
   375     a Windows systems which restores files from the repo. In addition, the attackers need to be able
   376     to create create files with arbitrary names which are then saved to the restic repo. For
   377     example, by creating a file named "..\test.txt" (which is a perfectly legal filename on Linux)
   378     and restoring a snapshot containing this file on Windows, it would be written to the parent of
   379     the target directory.
   380  
   381     We'd like to thank Tyler Spivey for reporting this responsibly!
   382  
   383     https://github.com/restic/restic/pull/1445
   384  
   385   * Bugfix #1256: Re-enable workaround for S3 backend
   386  
   387     We've re-enabled a workaround for `minio-go` (the library we're using to access s3 backends),
   388     this reduces memory usage.
   389  
   390     https://github.com/restic/restic/issues/1256
   391     https://github.com/restic/restic/pull/1267
   392  
   393   * Bugfix #1291: Reuse backend TCP connections to BackBlaze B2
   394  
   395     A bug was discovered in the library we're using to access Backblaze, it now reuses already
   396     established TCP connections which should be a lot faster and not cause network failures any
   397     more.
   398  
   399     https://github.com/restic/restic/issues/1291
   400     https://github.com/restic/restic/pull/1301
   401  
   402   * Bugfix #1317: Run prune when `forget --prune` is called with just snapshot IDs
   403  
   404     A bug in the `forget` command caused `prune` not to be run when `--prune` was specified without a
   405     policy, e.g. when only snapshot IDs that should be forgotten are listed manually.
   406  
   407     https://github.com/restic/restic/pull/1317
   408  
   409   * Bugfix #1437: Remove implicit path `/restic` for the s3 backend
   410  
   411     The s3 backend used the subdir `restic` within a bucket if no explicit path after the bucket name
   412     was specified. Since this version, restic does not use this default path any more. If you
   413     created a repo on s3 in a bucket without specifying a path within the bucket, you need to add
   414     `/restic` at the end of the repository specification to access your repo:
   415     `s3:s3.amazonaws.com/bucket/restic`
   416  
   417     https://github.com/restic/restic/issues/1292
   418     https://github.com/restic/restic/pull/1437
   419  
   420   * Enhancement #1102: Add subdirectory `ids` to fuse mount
   421  
   422     The fuse mount now has an `ids` subdirectory which contains the snapshots below their (short)
   423     IDs.
   424  
   425     https://github.com/restic/restic/issues/1102
   426     https://github.com/restic/restic/pull/1299
   427     https://github.com/restic/restic/pull/1320
   428  
   429   * Enhancement #1114: Add `--cacert` to specify TLS certificates to check against
   430  
   431     We've added the `--cacert` option which can be used to pass one (or more) CA certificates to
   432     restic. These are used in addition to the system CA certificates to verify HTTPS certificates
   433     (e.g. for the REST backend).
   434  
   435     https://github.com/restic/restic/issues/1114
   436     https://github.com/restic/restic/pull/1276
   437  
   438   * Enhancement #1216: Add upload/download limiting
   439  
   440     We've added support for rate limiting through `--limit-upload` and `--limit-download`
   441     flags.
   442  
   443     https://github.com/restic/restic/issues/1216
   444     https://github.com/restic/restic/pull/1336
   445     https://github.com/restic/restic/pull/1358
   446  
   447   * Enhancement #1271: Cache results for excludes for `backup`
   448  
   449     The `backup` command now caches the result of excludes for a directory.
   450  
   451     https://github.com/restic/restic/issues/1271
   452     https://github.com/restic/restic/pull/1326
   453  
   454   * Enhancement #1274: Add `generate` command, replaces `manpage` and `autocomplete`
   455  
   456     The `generate` command has been added, which replaces the now removed commands `manpage` and
   457     `autocomplete`. This release of restic contains the most recent manpages in `doc/man` and the
   458     auto-completion files for bash and zsh in `doc/bash-completion.sh` and
   459     `doc/zsh-completion.zsh`
   460  
   461     https://github.com/restic/restic/issues/1274
   462     https://github.com/restic/restic/pull/1282
   463  
   464   * Enhancement #1367: Allow comments in files read from via `--file-from`
   465  
   466     When the list of files/dirs to be saved is read from a file with `--files-from`, comment lines
   467     (starting with `#`) are now ignored.
   468  
   469     https://github.com/restic/restic/issues/1367
   470     https://github.com/restic/restic/pull/1368
   471  
   472   * Enhancement #448: Sftp backend prompts for password
   473  
   474     The sftp backend now prompts for the password if a password is necessary for login.
   475  
   476     https://github.com/restic/restic/issues/448
   477     https://github.com/restic/restic/pull/1270
   478  
   479   * Enhancement #510: Add `dump` command
   480  
   481     We've added the `dump` command which prints a file from a snapshot to stdout. This can e.g. be
   482     used to restore files read with `backup --stdin`.
   483  
   484     https://github.com/restic/restic/issues/510
   485     https://github.com/restic/restic/pull/1346
   486  
   487   * Enhancement #1040: Add local metadata cache
   488  
   489     We've added a local cache for metadata so that restic doesn't need to load all metadata
   490     (snapshots, indexes, ...) from the repo each time it starts. By default the cache is active, but
   491     there's a new global option `--no-cache` that can be used to disable the cache. By deafult, the
   492     cache a standard cache folder for the OS, which can be overridden with `--cache-dir`. The cache
   493     will automatically populate, indexes and snapshots are saved as they are loaded. Cache
   494     directories for repos that haven't been used recently can automatically be removed by restic
   495     with the `--cleanup-cache` option.
   496  
   497     A related change was to by default create pack files in the repo that contain either data or
   498     metadata, not both mixed together. This allows easy caching of only the metadata files. The
   499     next run of `restic prune` will untangle mixed files automatically.
   500  
   501     https://github.com/restic/restic/issues/29
   502     https://github.com/restic/restic/issues/738
   503     https://github.com/restic/restic/issues/282
   504     https://github.com/restic/restic/pull/1040
   505     https://github.com/restic/restic/pull/1287
   506     https://github.com/restic/restic/pull/1436
   507     https://github.com/restic/restic/pull/1265
   508  
   509   * Enhancement #1249: Add `latest` symlink in fuse mount
   510  
   511     The directory structure in the fuse mount now exposes a symlink `latest` which points to the
   512     latest snapshot in that particular directory.
   513  
   514     https://github.com/restic/restic/pull/1249
   515  
   516   * Enhancement #1269: Add `--compact` to `forget` command
   517  
   518     The option `--compact` was added to the `forget` command to provide the same compact view as the
   519     `snapshots` command.
   520  
   521     https://github.com/restic/restic/pull/1269
   522  
   523   * Enhancement #1281: Google Cloud Storage backend needs less permissions
   524  
   525     The Google Cloud Storage backend no longer requires the service account to have the
   526     `storage.buckets.get` permission ("Storage Admin" role) in `restic init` if the bucket
   527     already exists.
   528  
   529     https://github.com/restic/restic/pull/1281
   530  
   531   * Enhancement #1319: Make `check` print `no errors found` explicitly
   532  
   533     The `check` command now explicetly prints `No errors were found` when no errors could be found.
   534  
   535     https://github.com/restic/restic/issues/1303
   536     https://github.com/restic/restic/pull/1319
   537  
   538   * Enhancement #1353: Retry failed backend requests
   539  
   540     https://github.com/restic/restic/pull/1353
   541  
   542  
   543  Changelog for restic 0.7.3 (2017-09-20)
   544  =======================================
   545  
   546  The following sections list the changes in restic 0.7.3 relevant to
   547  restic users. The changes are ordered by importance.
   548  
   549  Summary
   550  -------
   551  
   552   * Fix #1246: List all files stored in Google Cloud Storage
   553  
   554  Details
   555  -------
   556  
   557   * Bugfix #1246: List all files stored in Google Cloud Storage
   558  
   559     For large backups stored in Google Cloud Storage, the `prune` command fails because listing
   560     only returns the first 1000 files. This has been corrected, no data is lost in the process. In
   561     addition, a plausibility check was added to `prune`.
   562  
   563     https://github.com/restic/restic/issues/1246
   564     https://github.com/restic/restic/pull/1247
   565  
   566  
   567  Changelog for restic 0.7.2 (2017-09-13)
   568  =======================================
   569  
   570  The following sections list the changes in restic 0.7.2 relevant to
   571  restic users. The changes are ordered by importance.
   572  
   573  Summary
   574  -------
   575  
   576   * Fix #1167: Do not create a local repo unless `init` is used
   577   * Fix #1164: Make the `key remove` command behave as documented
   578   * Fix #1191: Make sure to write profiling files on interrupt
   579   * Enh #1132: Make `key` command always prompt for a password
   580   * Enh #1179: Resolve name conflicts, append a counter
   581   * Enh #1218: Add `--compact` to `snapshots` command
   582   * Enh #317: Add `--exclude-caches` and `--exclude-if-present`
   583   * Enh #697: Automatically generate man pages for all restic commands
   584   * Enh #1044: Improve `restore`, do not traverse/load excluded directories
   585   * Enh #1061: Add Dockerfile and official Docker image
   586   * Enh #1126: Use the standard Go git repository layout, use `dep` for vendoring
   587   * Enh #1134: Add support for storing backups on Google Cloud Storage
   588   * Enh #1144: Properly report errors when reading files with exclude patterns
   589   * Enh #1149: Add support for storing backups on Microsoft Azure Blob Storage
   590   * Enh #1196: Add `--group-by` to `forget` command for flexible grouping
   591   * Enh #1203: Print stats on all BSD systems when SIGINFO (ctrl+t) is received
   592   * Enh #1205: Allow specifying time/date for a backup with `--time`
   593  
   594  Details
   595  -------
   596  
   597   * Bugfix #1167: Do not create a local repo unless `init` is used
   598  
   599     When a restic command other than `init` is used with a local repository and the repository
   600     directory does not exist, restic creates the directory structure. That's an error, only the
   601     `init` command should create the dir.
   602  
   603     https://github.com/restic/restic/issues/1167
   604     https://github.com/restic/restic/pull/1182
   605  
   606   * Bugfix #1164: Make the `key remove` command behave as documented
   607  
   608     https://github.com/restic/restic/pull/1164
   609  
   610   * Bugfix #1191: Make sure to write profiling files on interrupt
   611  
   612     Since a few releases restic had the ability to write profiling files for memory and CPU usage
   613     when `debug` is enabled. It was discovered that when restic is interrupted (ctrl+c is
   614     pressed), the proper shutdown hook is not run. This is now corrected.
   615  
   616     https://github.com/restic/restic/pull/1191
   617  
   618   * Enhancement #1132: Make `key` command always prompt for a password
   619  
   620     The `key` command now prompts for a password even if the original password to access a repo has
   621     been specified via the `RESTIC_PASSWORD` environment variable or a password file.
   622  
   623     https://github.com/restic/restic/issues/1132
   624     https://github.com/restic/restic/pull/1133
   625  
   626   * Enhancement #1179: Resolve name conflicts, append a counter
   627  
   628     https://github.com/restic/restic/issues/1179
   629     https://github.com/restic/restic/pull/1209
   630  
   631   * Enhancement #1218: Add `--compact` to `snapshots` command
   632  
   633     The option `--compact` was added to the `snapshots` command to get a better overview of the
   634     snapshots in a repo. It limits each snapshot to a single line.
   635  
   636     https://github.com/restic/restic/issues/1218
   637     https://github.com/restic/restic/pull/1223
   638  
   639   * Enhancement #317: Add `--exclude-caches` and `--exclude-if-present`
   640  
   641     A new option `--exclude-caches` was added that allows excluding cache directories (that are
   642     tagged as such). This is a special case of a more generic option `--exclude-if-present` which
   643     excludes a directory if a file with a specific name (and contents) is present.
   644  
   645     https://github.com/restic/restic/issues/317
   646     https://github.com/restic/restic/pull/1170
   647     https://github.com/restic/restic/pull/1224
   648  
   649   * Enhancement #697: Automatically generate man pages for all restic commands
   650  
   651     https://github.com/restic/restic/issues/697
   652     https://github.com/restic/restic/pull/1147
   653  
   654   * Enhancement #1044: Improve `restore`, do not traverse/load excluded directories
   655  
   656     https://github.com/restic/restic/pull/1044
   657  
   658   * Enhancement #1061: Add Dockerfile and official Docker image
   659  
   660     https://github.com/restic/restic/pull/1061
   661  
   662   * Enhancement #1126: Use the standard Go git repository layout, use `dep` for vendoring
   663  
   664     The git repository layout was changed to resemble the layout typically used in Go projects,
   665     we're not using `gb` for building restic any more and vendoring the dependencies is now taken
   666     care of by `dep`.
   667  
   668     https://github.com/restic/restic/pull/1126
   669  
   670   * Enhancement #1134: Add support for storing backups on Google Cloud Storage
   671  
   672     https://github.com/restic/restic/issues/211
   673     https://github.com/restic/restic/pull/1134
   674     https://github.com/restic/restic/pull/1052
   675  
   676   * Enhancement #1144: Properly report errors when reading files with exclude patterns
   677  
   678     https://github.com/restic/restic/pull/1144
   679  
   680   * Enhancement #1149: Add support for storing backups on Microsoft Azure Blob Storage
   681  
   682     The library we're using to access the service requires Go 1.8, so restic now needs at least Go
   683     1.8.
   684  
   685     https://github.com/restic/restic/issues/609
   686     https://github.com/restic/restic/pull/1149
   687     https://github.com/restic/restic/pull/1059
   688  
   689   * Enhancement #1196: Add `--group-by` to `forget` command for flexible grouping
   690  
   691     https://github.com/restic/restic/pull/1196
   692  
   693   * Enhancement #1203: Print stats on all BSD systems when SIGINFO (ctrl+t) is received
   694  
   695     https://github.com/restic/restic/pull/1203
   696     https://github.com/restic/restic/pull/1082
   697  
   698   * Enhancement #1205: Allow specifying time/date for a backup with `--time`
   699  
   700     https://github.com/restic/restic/pull/1205
   701  
   702  
   703  Changelog for restic 0.7.1 (2017-07-22)
   704  =======================================
   705  
   706  The following sections list the changes in restic 0.7.1 relevant to
   707  restic users. The changes are ordered by importance.
   708  
   709  Summary
   710  -------
   711  
   712   * Fix #1115: Fix `prune`, only include existing files in indexes
   713   * Enh #1055: Create subdirs below `data/` for local/sftp backends
   714   * Enh #1067: Allow loading credentials for s3 from IAM
   715   * Enh #1073: Add `migrate` cmd to migrate from `s3legacy` to `default` layout
   716   * Enh #1081: Clarify semantic for `--tasg` for the `forget` command
   717   * Enh #1080: Ignore chmod() errors on filesystems which do not support it
   718   * Enh #1082: Print stats on SIGINFO on Darwin and FreeBSD (ctrl+t)
   719  
   720  Details
   721  -------
   722  
   723   * Bugfix #1115: Fix `prune`, only include existing files in indexes
   724  
   725     A bug was found (and corrected) in the index rebuilding after prune, which led to indexes which
   726     include blobs that were not present in the repo any more. There were already checks in place
   727     which detected this situation and aborted with an error message. A new run of either `prune` or
   728     `rebuild-index` corrected the index files. This is now fixed and a test has been added to detect
   729     this.
   730  
   731     https://github.com/restic/restic/pull/1115
   732  
   733   * Enhancement #1055: Create subdirs below `data/` for local/sftp backends
   734  
   735     The local and sftp backends now create the subdirs below `data/` on open/init. This way, restic
   736     makes sure that they always exist. This is connected to an issue for the sftp server:
   737  
   738     https://github.com/restic/restic/issues/1055
   739     https://github.com/restic/restic/pull/1077
   740     https://github.com/restic/restic/pull/1105
   741     https://github.com/restic/rest-server/pull/11#issuecomment-309879710
   742  
   743   * Enhancement #1067: Allow loading credentials for s3 from IAM
   744  
   745     When no S3 credentials are specified in the environment variables, restic now tries to load
   746     credentials from an IAM instance profile when the s3 backend is used.
   747  
   748     https://github.com/restic/restic/issues/1067
   749     https://github.com/restic/restic/pull/1086
   750  
   751   * Enhancement #1073: Add `migrate` cmd to migrate from `s3legacy` to `default` layout
   752  
   753     The `migrate` command for chaning the `s3legacy` layout to the `default` layout for s3
   754     backends has been improved: It can now be restarted with `restic migrate --force s3_layout`
   755     and automatically retries operations on error.
   756  
   757     https://github.com/restic/restic/issues/1073
   758     https://github.com/restic/restic/pull/1075
   759  
   760   * Enhancement #1081: Clarify semantic for `--tasg` for the `forget` command
   761  
   762     https://github.com/restic/restic/issues/1081
   763     https://github.com/restic/restic/pull/1090
   764  
   765   * Enhancement #1080: Ignore chmod() errors on filesystems which do not support it
   766  
   767     https://github.com/restic/restic/pull/1080
   768     https://github.com/restic/restic/pull/1112
   769  
   770   * Enhancement #1082: Print stats on SIGINFO on Darwin and FreeBSD (ctrl+t)
   771  
   772     https://github.com/restic/restic/pull/1082
   773  
   774  
   775  Changelog for restic 0.7.0 (2017-07-01)
   776  =======================================
   777  
   778  The following sections list the changes in restic 0.7.0 relevant to
   779  restic users. The changes are ordered by importance.
   780  
   781  Summary
   782  -------
   783  
   784   * Fix #1013: Switch back to using the high-level minio-go API for s3
   785   * Fix #965: Switch to `default` repo layout for the s3 backend
   786   * Enh #1021: Detect invalid backend name and print error
   787   * Enh #1029: Remove invalid pack files when `prune` is run
   788   * Enh #512: Add Backblaze B2 backend
   789   * Enh #636: Add dirs `tags` and `hosts` to fuse mount
   790   * Enh #989: Improve performance of the `find` command
   791   * Enh #975: Add new backend for OpenStack Swift
   792   * Enh #998: Improve performance of the fuse mount
   793  
   794  Details
   795  -------
   796  
   797   * Bugfix #1013: Switch back to using the high-level minio-go API for s3
   798  
   799     For the s3 backend we're back to using the high-level API the s3 client library for uploading
   800     data, a few users reported dropped connections (which the library will automatically retry
   801     now).
   802  
   803     https://github.com/restic/restic/issues/1013
   804     https://github.com/restic/restic/issues/1023
   805     https://github.com/restic/restic/pull/1025
   806  
   807   * Bugfix #965: Switch to `default` repo layout for the s3 backend
   808  
   809     The default layout for the s3 backend is now `default` (instead of `s3legacy`). Also, there's a
   810     new `migrate` command to convert an existing repo, it can be run like this: `restic migrate
   811     s3_layout`
   812  
   813     https://github.com/restic/restic/issues/965
   814     https://github.com/restic/restic/pull/1004
   815  
   816   * Enhancement #1021: Detect invalid backend name and print error
   817  
   818     Restic now tries to detect when an invalid/unknown backend is used and returns an error
   819     message.
   820  
   821     https://github.com/restic/restic/issues/1021
   822     https://github.com/restic/restic/pull/1070
   823  
   824   * Enhancement #1029: Remove invalid pack files when `prune` is run
   825  
   826     The `prune` command has been improved and will now remove invalid pack files, for example files
   827     that have not been uploaded completely because a backup was interrupted.
   828  
   829     https://github.com/restic/restic/issues/1029
   830     https://github.com/restic/restic/pull/1036
   831  
   832   * Enhancement #512: Add Backblaze B2 backend
   833  
   834     https://github.com/restic/restic/issues/512
   835     https://github.com/restic/restic/pull/978
   836  
   837   * Enhancement #636: Add dirs `tags` and `hosts` to fuse mount
   838  
   839     The fuse mount now has two more directories: `tags` contains a subdir for each tag, which in turn
   840     contains only the snapshots that have this tag. The subdir `hosts` contains a subdir for each
   841     host that has a snapshot, and the subdir contains the snapshots for that host.
   842  
   843     https://github.com/restic/restic/issues/636
   844     https://github.com/restic/restic/pull/1050
   845  
   846   * Enhancement #989: Improve performance of the `find` command
   847  
   848     Improved performance for the `find` command: Restic recognizes paths it has already checked
   849     for the files in question, so the number of backend requests is reduced a lot.
   850  
   851     https://github.com/restic/restic/issues/989
   852     https://github.com/restic/restic/pull/993
   853  
   854   * Enhancement #975: Add new backend for OpenStack Swift
   855  
   856     https://github.com/restic/restic/pull/975
   857     https://github.com/restic/restic/pull/648
   858  
   859   * Enhancement #998: Improve performance of the fuse mount
   860  
   861     Listing directories which contain large files now is significantly faster.
   862  
   863     https://github.com/restic/restic/pull/998
   864  
   865  
   866  Changelog for restic 0.6.1 (2017-06-01)
   867  =======================================
   868  
   869  The following sections list the changes in restic 0.6.1 relevant to
   870  restic users. The changes are ordered by importance.
   871  
   872  Summary
   873  -------
   874  
   875   * Enh #985: Allow multiple parallel idle HTTP connections
   876   * Enh #981: Remove temporary path from binary in `build.go`
   877   * Enh #974: Remove regular status reports
   878  
   879  Details
   880  -------
   881  
   882   * Enhancement #985: Allow multiple parallel idle HTTP connections
   883  
   884     Backends based on HTTP now allow several idle connections in parallel. This is especially
   885     important for the REST backend, which (when used with a local server) may create a lot
   886     connections and exhaust available ports quickly.
   887  
   888     https://github.com/restic/restic/issues/985
   889     https://github.com/restic/restic/pull/986
   890  
   891   * Enhancement #981: Remove temporary path from binary in `build.go`
   892  
   893     The `build.go` now strips the temporary directory used for compilation from the binary. This
   894     is the first step in enabling reproducible builds.
   895  
   896     https://github.com/restic/restic/pull/981
   897  
   898   * Enhancement #974: Remove regular status reports
   899  
   900     Regular status report: We've removed the status report that was printed every 10 seconds when
   901     restic is run non-interactively. You can still force reporting the current status by sending a
   902     `USR1` signal to the process.
   903  
   904     https://github.com/restic/restic/pull/974
   905  
   906  
   907  Changelog for restic 0.6.0 (2017-05-29)
   908  =======================================
   909  
   910  The following sections list the changes in restic 0.6.0 relevant to
   911  restic users. The changes are ordered by importance.
   912  
   913  Summary
   914  -------
   915  
   916   * Enh #957: Make `forget` consistent
   917   * Enh #966: Unify repository layout for all backends
   918   * Enh #962: Improve memory and runtime for the s3 backend
   919  
   920  Details
   921  -------
   922  
   923   * Enhancement #957: Make `forget` consistent
   924  
   925     The `forget` command was corrected to be more consistent in which snapshots are to be
   926     forgotten. It is possible that the new code removes more snapshots than before, so please
   927     review what would be deleted by using the `--dry-run` option.
   928  
   929     https://github.com/restic/restic/issues/953
   930     https://github.com/restic/restic/pull/957
   931  
   932   * Enhancement #966: Unify repository layout for all backends
   933  
   934     Up to now the s3 backend used a special repository layout. We've decided to unify the repository
   935     layout and implemented the default layout also for the s3 backend. For creating a new
   936     repository on s3 with the default layout, use `restic -o s3.layout=default init`. For further
   937     commands the option is not necessary any more, restic will automatically detect the correct
   938     layout to use. A future version will switch to the default layout for new repositories.
   939  
   940     https://github.com/restic/restic/issues/965
   941     https://github.com/restic/restic/pull/966
   942  
   943   * Enhancement #962: Improve memory and runtime for the s3 backend
   944  
   945     We've updated the library used for accessing s3, switched to using a lower level API and added
   946     caching for some requests. This lead to a decrease in memory usage and a great speedup. In
   947     addition, we added benchmark functions for all backends, so we can track improvements over
   948     time. The Continuous Integration test service we're using (Travis) now runs the s3 backend
   949     tests not only against a Minio server, but also against the Amazon s3 live service, so we should
   950     be notified of any regressions much sooner.
   951  
   952     https://github.com/restic/restic/pull/962
   953     https://github.com/restic/restic/pull/960
   954     https://github.com/restic/restic/pull/946
   955     https://github.com/restic/restic/pull/938
   956     https://github.com/restic/restic/pull/883
   957  
   958