diff --git a/CHANGELOG.md b/CHANGELOG.md index a23925963..a8e4790cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,464 +1,256 @@ -This file describes changes relevant to all users that are made in each -released version of restic from the perspective of the user. +Changelog for restic 0.7.1 (2017-07-22) +======================================= -Important Changes in 0.X.Y -========================== +The following sections list the changes in restic 0.7.1 relevant to +restic users. The changes are ordered by importance. - * 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. - https://github.com/restic/restic/pull/1459 - https://github.com/restic/restic/issues/1457 - https://github.com/restic/restic/issues/1466 +Summary +------- - * The command `diff` was added, it allows comparing two snapshots and listing - all differences. - https://github.com/restic/restic/issues/11 - https://github.com/restic/restic/issues/1460 - https://github.com/restic/restic/pull/1462 + * Fix #1115: Fix `prune`, only include existing files in indexes + * Enh #1055: Create subdirs below `data/` for local/sftp backends + * Enh #1067: Allow loading credentials for s3 from IAM + * Enh #1073: Add `migrate` cmd to migrate from `s3legacy` to `default` layout + * Enh #1081: Clarify semantic for `--tasg` for the `forget` command + * Enh #1080: Ignore chmod() errors on filesystems which do not support it + * Enh #1082: Print stats on SIGINFO on Darwin and FreeBSD (ctrl+t) +Details +------- -Small changes -------------- + * Bugfix #1115: Fix `prune`, only include existing files in indexes - * 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. - https://github.com/restic/restic/pull/1436 + A bug was found (and corrected) in the index rebuilding after prune, which led to indexes which + include blobs that were not present in the repo any more. There were already checks in place + which detected this situation and aborted with an error message. A new run of either `prune` or + `rebuild-index` corrected the index files. This is now fixed and a test has been added to detect + this. - * The cache directory on Windows and Darwin was not correct, instead the - directory `.cache` was used. - https://github.com/restic/restic/pull/1454 + https://github.com/restic/restic/pull/1115 - * 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. - https://github.com/restic/restic/pull/1452 + * Enhancement #1055: Create subdirs below `data/` for local/sftp backends - * We've improved the s3 backend to work with DigitalOcean Spaces. - https://github.com/restic/restic/pull/1459 - https://github.com/restic/restic/issues/1457 + The local and sftp backends now create the subdirs below `data/` on open/init. This way, restic + makes sure that they always exist. This is connected to an issue for the sftp server: - * The cancellation logic was improved, restic can now shut down cleanly when - requested to do so (e.g. via ctrl+c). - https://github.com/restic/restic/pull/1439 - -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 systems which restores files from the repo. - In addition, the attackers need to be able to create 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! - - https://github.com/restic/restic/pull/1445 - - * 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` - https://github.com/restic/restic/issues/1292 - https://github.com/restic/restic/pull/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. Cache directories for repos that haven't been used recently can - automatically be removed by restic with the `--cleanup-cache` option. - https://github.com/restic/restic/pull/1040 - https://github.com/restic/restic/issues/29 - https://github.com/restic/restic/issues/738 - https://github.com/restic/restic/issues/282 - https://github.com/restic/restic/pull/1287 - https://github.com/restic/restic/pull/1436 - - * 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. - https://github.com/restic/restic/pull/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. - https://github.com/restic/restic/pull/1281 - - * Added support for rate limiting through `--limit-upload` and - `--limit-download` flags. - https://github.com/restic/restic/issues/1216 - https://github.com/restic/restic/pull/1336 - https://github.com/restic/restic/pull/1358 - - * Failed backend requests are now automatically retried. - https://github.com/restic/restic/pull/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`. - https://github.com/restic/restic/issues/510 - https://github.com/restic/restic/pull/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. - https://github.com/restic/restic/pull/1249 - - * The option `--compact` was added to the `forget` command to provide the same - compact view as the `snapshots` command. - https://github.com/restic/restic/pull/1269 - - * We've re-enabled a workaround for `minio-go` (the library we're using to - access s3 backends), this reduces memory usage. - https://github.com/restic/restic/issues/1256 - https://github.com/restic/restic/pull/1267 - - * The sftp backend now prompts for the password if a password is necessary for - login. - https://github.com/restic/restic/issues/448 - https://github.com/restic/restic/pull/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` - https://github.com/restic/restic/issues/1274 - https://github.com/restic/restic/pull/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. - https://github.com/restic/restic/issues/1291 - https://github.com/restic/restic/pull/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. - https://github.com/restic/restic/pull/1317 - - * The `check` command now explicetly prints `No errors were found` when no - errors could be found. - https://github.com/restic/restic/pull/1319 - https://github.com/restic/restic/issues/1303 - - * The fuse mount now has an `ids` subdirectory which contains the snapshots - below their (short) IDs. - https://github.com/restic/restic/issues/1102 - https://github.com/restic/restic/pull/1299 - https://github.com/restic/restic/pull/1320 - - * The `backup` command was improved, it now caches the result of excludes for - a directory. - https://github.com/restic/restic/issues/1271 - https://github.com/restic/restic/pull/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). - https://github.com/restic/restic/issues/1114 - https://github.com/restic/restic/pull/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. - https://github.com/restic/restic/issues/1367 - https://github.com/restic/restic/pull/1368 - -Important Changes in 0.7.3 -========================== - - * For large backups stored in Google Cloud Storage, the `prune` command fails - because listing only returns the first 1000 files. This has been corrected, - no data is lost in the process. In addition, a plausibility check was added - to `prune`. - https://github.com/restic/restic/issues/1246 - https://github.com/restic/restic/pull/1247 - - -Important Changes in 0.7.2 -========================== - - * We've added an official docker image and a Dockerfile to build this image in - `docker/`. - https://github.com/restic/restic/pull/1061 - - * The git repository layout was changed to resemble the layout typically used - in Go projects, we're not using `gb` for building restic any more and - vendoring the dependencies is now taken care of by `dep`. - https://github.com/restic/restic/pull/1126 - - * We now support saving backups on Google Cloud Storage. - https://github.com/restic/restic/pull/1134 - https://github.com/restic/restic/pull/1052 - https://github.com/restic/restic/issues/211 - - * We've added support for Microsoft Azure Blob Storage as a restic backend. - https://github.com/restic/restic/pull/1149 - https://github.com/restic/restic/pull/1059 - https://github.com/restic/restic/issues/609 - - * In the course of supporting Microsoft Azure Blobe Storage Go 1.8 is now a - requirement to build restic. - - * The `restore` command has been improved: When dirs are excluded (or not - included) in a restore, they are not loaded from the repo any more. - https://github.com/restic/restic/pull/1044 - - * Name collisions are now resolved by appending a counter. - https://github.com/restic/restic/issues/1179 - https://github.com/restic/restic/pull/1209 - - -Small changes -------------- - - * The `key` command now prompts for a password even if the original password - to access a repo has been specified via the `RESTIC_PASSWORD` environment - variable or a password file. - https://github.com/restic/restic/issues/1132 - https://github.com/restic/restic/pull/1133 - - * Properly report errors when reading files with exclude patterns. - https://github.com/restic/restic/pull/1144 - - * We now automatically generate man pages for all restic commands, see the - subdir `doc/man`. - https://github.com/restic/restic/issues/697 - https://github.com/restic/restic/pull/1147 - - * The `key remove` command was corrected and now works as documented. - https://github.com/restic/restic/pull/1164 - - * When a restic command other than `init` is used with a local repository and - the repository directory does not exist, restic creates the directory - structure. That's an error, only the `init` command should create the dir. - https://github.com/restic/restic/issues/1167 - https://github.com/restic/restic/pull/1182 - - * Restic now prints stats on all BSD systems (not only on darwin) when SIGINFO - is received (usually when ctrl+t is pressed). - https://github.com/restic/restic/pull/1203 - https://github.com/restic/restic/pull/1082#issuecomment-326279920 - - * Since a few releases restic had the ability to write profiling files for - memory and CPU usage when `debug` is enabled. It was discovered that when - restic is interrupted (ctrl+c is pressed), the proper shutdown hook is not - run. This is now corrected. - https://github.com/restic/restic/pull/1191 - - * A new option `--exclude-caches` was added that allows excluding cache - directories (that are tagged as such). This is a special case of a more - generic option `--exclude-if-present` which excludes a directory if a file - with a specific name (and contents) is present. - https://github.com/restic/restic/issues/317 - https://github.com/restic/restic/pull/1170 - https://github.com/restic/restic/pull/1224 - - * The `forget` command now has an option `--group-by` that allows flexible - grouping policies. - https://github.com/restic/restic/pull/1196 - - * The date and time restic records for a new backup can now be specified - externally by passing `--time` to the `backup` command. - https://github.com/restic/restic/pull/1205 - - * The option `--compact` was added to the `snapshots` command to get a better - overview of the snapshots in a repo. It limits each snapshot to a single - line. - https://github.com/restic/restic/issues/1218 - https://github.com/restic/restic/pull/1223 - - -Important Changes in 0.7.1 -========================== - - * The `migrate` command for chaning the `s3legacy` layout to the `default` - layout for s3 backends has been improved: It can now be restarted with - `restic migrate --force s3_layout` and automatically retries operations on - error. - https://github.com/restic/restic/issues/1073 - https://github.com/restic/restic/pull/1075 - -Small changes -------------- - - * The local and sftp backends now create the subdirs below `data/` on - open/init. This way, restic makes sure that they always exist. This is - connected to an issue for the sftp server: - https://github.com/restic/rest-server/pull/11#issuecomment-309879710 https://github.com/restic/restic/issues/1055 https://github.com/restic/restic/pull/1077 https://github.com/restic/restic/pull/1105 + https://github.com/restic/rest-server/pull/11#issuecomment-309879710 + + * Enhancement #1067: Allow loading credentials for s3 from IAM + + When no S3 credentials are specified in the environment variables, restic now tries to load + credentials from an IAM instance profile when the s3 backend is used. - * When no S3 credentials are specified in the environment variables, restic - now tries to load credentials from an IAM instance profile when the s3 - backend is used. https://github.com/restic/restic/issues/1067 https://github.com/restic/restic/pull/1086 - * On Darwin and FreeBSD, restic now prints stats when SIGINFO is received - (usually when ctrl+t is pressed). - https://github.com/restic/restic/pull/1082 + * Enhancement #1073: Add `migrate` cmd to migrate from `s3legacy` to `default` layout - * The dependencies have been updated. - https://github.com/restic/restic/pull/1108 - https://github.com/restic/restic/pull/1124 + The `migrate` command for chaning the `s3legacy` layout to the `default` layout for s3 + backends has been improved: It can now be restarted with `restic migrate --force s3_layout` + and automatically retries operations on error. - * A bug was found (and corrected) in the index rebuilding after prune, which - led to indexes which include blobs that were not present in the repo any - more. There were already checks in place which detected this situation and - aborted with an error message. A new run of either `prune` or - `rebuild-index` corrected the index files. This is now fixed and a test has - been added to detect this. - https://github.com/restic/restic/pull/1115 + https://github.com/restic/restic/issues/1073 + https://github.com/restic/restic/pull/1075 - * Errors for chmod() on Unix for filesystems which do not support it (e.g. smb - mounted via gvfs) are now ignored. - https://github.com/restic/restic/pull/1080 - https://github.com/restic/restic/pull/1112 + * Enhancement #1081: Clarify semantic for `--tasg` for the `forget` command - * The semantic for the `--tags` option to `forget` and `snapshots` was - clarified: https://github.com/restic/restic/issues/1081 https://github.com/restic/restic/pull/1090 -Important Changes in 0.7.0 -========================== + * Enhancement #1080: Ignore chmod() errors on filesystems which do not support it - * New "swift" backend: A new backend for the OpenStack Swift cloud storage - protocol has been added, https://wiki.openstack.org/wiki/Swift - https://github.com/restic/restic/pull/975 - https://github.com/restic/restic/pull/648 + https://github.com/restic/restic/pull/1080 + https://github.com/restic/restic/pull/1112 - * New "b2" backend: A new backend for Backblaze B2 cloud storage - service has been added, https://www.backblaze.com - https://github.com/restic/restic/issues/512 - https://github.com/restic/restic/pull/978 + * Enhancement #1082: Print stats on SIGINFO on Darwin and FreeBSD (ctrl+t) - * Improved performance for the `find` command: Restic recognizes paths it has - already checked for the files in question, so the number of backend requests - is reduced a lot. - https://github.com/restic/restic/issues/989 - https://github.com/restic/restic/pull/993 + https://github.com/restic/restic/pull/1082 - * Improved performance for the fuse mount: Listing directories which contain - large files now is significantly faster. - https://github.com/restic/restic/pull/998 - * The default layout for the s3 backend is now `default` (instead of - `s3legacy`). Also, there's a new `migrate` command to convert an existing - repo, it can be run like this: `restic migrate s3_layout` - https://github.com/restic/restic/issues/965 - https://github.com/restic/restic/pull/1004 +Changelog for restic 0.7.0 (2017-07-01) +======================================= - * The fuse mount now has two more directories: `tags` contains a subdir for - each tag, which in turn contains only the snapshots that have this tag. The - subdir `hosts` contains a subdir for each host that has a snapshot, and the - subdir contains the snapshots for that host. - https://github.com/restic/restic/issues/636 - https://github.com/restic/restic/pull/1050 +The following sections list the changes in restic 0.7.0 relevant to +restic users. The changes are ordered by importance. -Small changes -------------- +Summary +------- + + * Fix #1013: Switch back to using the high-level minio-go API for s3 + * Fix #965: Switch to `default` repo layout for the s3 backend + * Enh #1021: Detect invalid backend name and print error + * Enh #1029: Remove invalid pack files when `prune` is run + * Enh #512: Add Backblaze B2 backend + * Enh #636: Add dirs `tags` and `hosts` to fuse mount + * Enh #989: Improve performance of the `find` command + * Enh #975: Add new backend for OpenStack Swift + * Enh #998: Improve performance of the fuse mount + +Details +------- + + * Bugfix #1013: Switch back to using the high-level minio-go API for s3 + + For the s3 backend we're back to using the high-level API the s3 client library for uploading + data, a few users reported dropped connections (which the library will automatically retry + now). - * For the s3 backend we're back to using the high-level API the s3 client - library for uploading data, a few users reported dropped connections (which - the library will automatically retry now). https://github.com/restic/restic/issues/1013 https://github.com/restic/restic/issues/1023 https://github.com/restic/restic/pull/1025 - * The `prune` command has been improved and will now remove invalid pack - files, for example files that have not been uploaded completely because a - backup was interrupted. - https://github.com/restic/restic/issues/1029 - https://github.com/restic/restic/pull/1036 + * Bugfix #965: Switch to `default` repo layout for the s3 backend + + The default layout for the s3 backend is now `default` (instead of `s3legacy`). Also, there's a + new `migrate` command to convert an existing repo, it can be run like this: `restic migrate + s3_layout` + + https://github.com/restic/restic/issues/965 + https://github.com/restic/restic/pull/1004 + + * Enhancement #1021: Detect invalid backend name and print error + + Restic now tries to detect when an invalid/unknown backend is used and returns an error + message. - * restic now tries to detect when an invalid/unknown backend is used and - returns an error message. https://github.com/restic/restic/issues/1021 https://github.com/restic/restic/pull/1070 -Important Changes in 0.6.1 -========================== + * Enhancement #1029: Remove invalid pack files when `prune` is run -This is mostly a bugfix release and only contains small changes: + The `prune` command has been improved and will now remove invalid pack files, for example files + that have not been uploaded completely because a backup was interrupted. - * We've fixed a bug where `rebuild-index` would corrupt the index when used - with the s3 backend together with the `default` layout. This is not the - default setting. + https://github.com/restic/restic/issues/1029 + https://github.com/restic/restic/pull/1036 + + * Enhancement #512: Add Backblaze B2 backend + + https://github.com/restic/restic/issues/512 + https://github.com/restic/restic/pull/978 + + * Enhancement #636: Add dirs `tags` and `hosts` to fuse mount + + The fuse mount now has two more directories: `tags` contains a subdir for each tag, which in turn + contains only the snapshots that have this tag. The subdir `hosts` contains a subdir for each + host that has a snapshot, and the subdir contains the snapshots for that host. + + https://github.com/restic/restic/issues/636 + https://github.com/restic/restic/pull/1050 + + * Enhancement #989: Improve performance of the `find` command + + Improved performance for the `find` command: Restic recognizes paths it has already checked + for the files in question, so the number of backend requests is reduced a lot. + + https://github.com/restic/restic/issues/989 + https://github.com/restic/restic/pull/993 + + * Enhancement #975: Add new backend for OpenStack Swift + + https://github.com/restic/restic/pull/975 + https://github.com/restic/restic/pull/648 + + * Enhancement #998: Improve performance of the fuse mount + + Listing directories which contain large files now is significantly faster. + + https://github.com/restic/restic/pull/998 + + +Changelog for restic 0.6.1 (2017-06-01) +======================================= + +The following sections list the changes in restic 0.6.1 relevant to +restic users. The changes are ordered by importance. + +Summary +------- + + * Enh #985: Allow multiple parallel idle HTTP connections + * Enh #981: Remove temporary path from binary in `build.go` + * Enh #974: Remove regular status reports + +Details +------- + + * Enhancement #985: Allow multiple parallel idle HTTP connections + + Backends based on HTTP now allow several idle connections in parallel. This is especially + important for the REST backend, which (when used with a local server) may create a lot + connections and exhaust available ports quickly. - * Backends based on HTTP now allow several idle connections in parallel. This - is especially important for the REST backend, which (when used with a local - server) may create a lot connections and exhaust available ports quickly. https://github.com/restic/restic/issues/985 https://github.com/restic/restic/pull/986 - * Regular status report: We've removed the status report that was printed - every 10 seconds when restic is run non-interactively. You can still force - reporting the current status by sending a `USR1` signal to the process. - https://github.com/restic/restic/pull/974 + * Enhancement #981: Remove temporary path from binary in `build.go` + + The `build.go` now strips the temporary directory used for compilation from the binary. This + is the first step in enabling reproducible builds. - * The `build.go` now strips the temporary directory used for compilation from - the binary. This is the first step in enabling reproducible builds. https://github.com/restic/restic/pull/981 -Important Changes in 0.6.0 -========================== + * Enhancement #974: Remove regular status reports -Consistent forget policy ------------------------- + Regular status report: We've removed the status report that was printed every 10 seconds when + restic is run non-interactively. You can still force reporting the current status by sending a + `USR1` signal to the process. -The `forget` command was corrected to be more consistent in which snapshots are -to be forgotten. It is possible that the new code removes more snapshots than -before, so please review what would be deleted by using the `--dry-run` option. + https://github.com/restic/restic/pull/974 -https://github.com/restic/restic/pull/957 -https://github.com/restic/restic/issues/953 -Unified repository layout -------------------------- +Changelog for restic 0.6.0 (2017-05-29) +======================================= -Up to now the s3 backend used a special repository layout. We've decided to -unify the repository layout and implemented the default layout also for the s3 -backend. For creating a new repository on s3 with the default layout, use -`restic -o s3.layout=default init`. For further commands the option is not -necessary any more, restic will automatically detect the correct layout to use. -A future version will switch to the default layout for new repositories. +The following sections list the changes in restic 0.6.0 relevant to +restic users. The changes are ordered by importance. -https://github.com/restic/restic/pull/966 -https://github.com/restic/restic/issues/965 +Summary +------- -Memory and time improvements for the s3 backend ------------------------------------------------ + * Enh #953: Make `forget` consistent + * Enh #965: Unify repository layout for all backends + * Enh #962: Improve memory and runtime for the s3 backend + +Details +------- + + * Enhancement #953: Make `forget` consistent + + The `forget` command was corrected to be more consistent in which snapshots are to be + forgotten. It is possible that the new code removes more snapshots than before, so please + review what would be deleted by using the `--dry-run` option. + + https://github.com/restic/restic/issues/953 + https://github.com/restic/restic/pull/957 + + * Enhancement #965: Unify repository layout for all backends + + Up to now the s3 backend used a special repository layout. We've decided to unify the repository + layout and implemented the default layout also for the s3 backend. For creating a new + repository on s3 with the default layout, use `restic -o s3.layout=default init`. For further + commands the option is not necessary any more, restic will automatically detect the correct + layout to use. A future version will switch to the default layout for new repositories. + + https://github.com/restic/restic/issues/965 + https://github.com/restic/restic/pull/966 + + * Enhancement #962: Improve memory and runtime for the s3 backend + + We've updated the library used for accessing s3, switched to using a lower level API and added + caching for some requests. This lead to a decrease in memory usage and a great speedup. In + addition, we added benchmark functions for all backends, so we can track improvements over + time. The Continuous Integration test service we're using (Travis) now runs the s3 backend + tests not only against a Minio server, but also against the Amazon s3 live service, so we should + be notified of any regressions much sooner. + + https://github.com/restic/restic/pull/962 + https://github.com/restic/restic/pull/960 + https://github.com/restic/restic/pull/946 + https://github.com/restic/restic/pull/938 + https://github.com/restic/restic/pull/883 -We've updated the library used for accessing s3, switched to using a lower -level API and added caching for some requests. This lead to a decrease in -memory usage and a great speedup. In addition, we added benchmark functions for -all backends, so we can track improvements over time. The Continuous -Integration test service we're using (Travis) now runs the s3 backend tests not -only against a Minio server, but also against the Amazon s3 live service, so we -should be notified of any regressions much sooner. -https://github.com/restic/restic/pull/962 -https://github.com/restic/restic/pull/960 -https://github.com/restic/restic/pull/946 -https://github.com/restic/restic/pull/938 -https://github.com/restic/restic/pull/883 diff --git a/changelog/0.6.0/issue-953 b/changelog/0.6.0/issue-953 new file mode 100644 index 000000000..04ac5cc18 --- /dev/null +++ b/changelog/0.6.0/issue-953 @@ -0,0 +1,8 @@ +Enhancement: Make `forget` consistent + +The `forget` command was corrected to be more consistent in which snapshots are +to be forgotten. It is possible that the new code removes more snapshots than +before, so please review what would be deleted by using the `--dry-run` option. + +https://github.com/restic/restic/pull/957 +https://github.com/restic/restic/issues/953 diff --git a/changelog/0.6.0/issue-965 b/changelog/0.6.0/issue-965 new file mode 100644 index 000000000..089b39b16 --- /dev/null +++ b/changelog/0.6.0/issue-965 @@ -0,0 +1,11 @@ +Enhancement: Unify repository layout for all backends + +Up to now the s3 backend used a special repository layout. We've decided to +unify the repository layout and implemented the default layout also for the s3 +backend. For creating a new repository on s3 with the default layout, use +`restic -o s3.layout=default init`. For further commands the option is not +necessary any more, restic will automatically detect the correct layout to use. +A future version will switch to the default layout for new repositories. + +https://github.com/restic/restic/pull/966 +https://github.com/restic/restic/issues/965 diff --git a/changelog/0.6.0/pull-962 b/changelog/0.6.0/pull-962 new file mode 100644 index 000000000..6bf14a48b --- /dev/null +++ b/changelog/0.6.0/pull-962 @@ -0,0 +1,15 @@ +Enhancement: Improve memory and runtime for the s3 backend + +We've updated the library used for accessing s3, switched to using a lower +level API and added caching for some requests. This lead to a decrease in +memory usage and a great speedup. In addition, we added benchmark functions for +all backends, so we can track improvements over time. The Continuous +Integration test service we're using (Travis) now runs the s3 backend tests not +only against a Minio server, but also against the Amazon s3 live service, so we +should be notified of any regressions much sooner. + +https://github.com/restic/restic/pull/962 +https://github.com/restic/restic/pull/960 +https://github.com/restic/restic/pull/946 +https://github.com/restic/restic/pull/938 +https://github.com/restic/restic/pull/883 diff --git a/changelog/0.6.1/issue-985 b/changelog/0.6.1/issue-985 new file mode 100644 index 000000000..d20f20326 --- /dev/null +++ b/changelog/0.6.1/issue-985 @@ -0,0 +1,8 @@ +Enhancement: Allow multiple parallel idle HTTP connections + +Backends based on HTTP now allow several idle connections in parallel. This +is especially important for the REST backend, which (when used with a local +server) may create a lot connections and exhaust available ports quickly. + +https://github.com/restic/restic/issues/985 +https://github.com/restic/restic/pull/986 diff --git a/changelog/0.6.1/pull-891 b/changelog/0.6.1/pull-891 new file mode 100644 index 000000000..1d07a8dbd --- /dev/null +++ b/changelog/0.6.1/pull-891 @@ -0,0 +1,6 @@ +Enhancement: Remove temporary path from binary in `build.go` + +The `build.go` now strips the temporary directory used for compilation from +the binary. This is the first step in enabling reproducible builds. + +https://github.com/restic/restic/pull/981 diff --git a/changelog/0.6.1/pull-974 b/changelog/0.6.1/pull-974 new file mode 100644 index 000000000..1358e2339 --- /dev/null +++ b/changelog/0.6.1/pull-974 @@ -0,0 +1,7 @@ +Enhancement: Remove regular status reports + +Regular status report: We've removed the status report that was printed +every 10 seconds when restic is run non-interactively. You can still force +reporting the current status by sending a `USR1` signal to the process. + +https://github.com/restic/restic/pull/974 diff --git a/changelog/0.7.0/issue-1013 b/changelog/0.7.0/issue-1013 new file mode 100644 index 000000000..5f9b7a786 --- /dev/null +++ b/changelog/0.7.0/issue-1013 @@ -0,0 +1,9 @@ +Bugfix: Switch back to using the high-level minio-go API for s3 + +For the s3 backend we're back to using the high-level API the s3 client library +for uploading data, a few users reported dropped connections (which the library +will automatically retry now). + +https://github.com/restic/restic/issues/1013 +https://github.com/restic/restic/issues/1023 +https://github.com/restic/restic/pull/1025 diff --git a/changelog/0.7.0/issue-1021 b/changelog/0.7.0/issue-1021 new file mode 100644 index 000000000..da727269f --- /dev/null +++ b/changelog/0.7.0/issue-1021 @@ -0,0 +1,7 @@ +Enhancement: Detect invalid backend name and print error + +restic now tries to detect when an invalid/unknown backend is used and +returns an error message. + +https://github.com/restic/restic/issues/1021 +https://github.com/restic/restic/pull/1070 diff --git a/changelog/0.7.0/issue-1029 b/changelog/0.7.0/issue-1029 new file mode 100644 index 000000000..eb1f700d5 --- /dev/null +++ b/changelog/0.7.0/issue-1029 @@ -0,0 +1,8 @@ +Enhancement: Remove invalid pack files when `prune` is run + +The `prune` command has been improved and will now remove invalid pack files, +for example files that have not been uploaded completely because a backup was +interrupted. + +https://github.com/restic/restic/issues/1029 +https://github.com/restic/restic/pull/1036 diff --git a/changelog/0.7.0/issue-512 b/changelog/0.7.0/issue-512 new file mode 100644 index 000000000..4b1163bf7 --- /dev/null +++ b/changelog/0.7.0/issue-512 @@ -0,0 +1,4 @@ +Enhancement: Add Backblaze B2 backend + +https://github.com/restic/restic/issues/512 +https://github.com/restic/restic/pull/978 diff --git a/changelog/0.7.0/issue-636 b/changelog/0.7.0/issue-636 new file mode 100644 index 000000000..d5e55b2ab --- /dev/null +++ b/changelog/0.7.0/issue-636 @@ -0,0 +1,9 @@ +Enhancement: Add dirs `tags` and `hosts` to fuse mount + +The fuse mount now has two more directories: `tags` contains a subdir for +each tag, which in turn contains only the snapshots that have this tag. The +subdir `hosts` contains a subdir for each host that has a snapshot, and the +subdir contains the snapshots for that host. + +https://github.com/restic/restic/issues/636 +https://github.com/restic/restic/pull/1050 diff --git a/changelog/0.7.0/issue-965 b/changelog/0.7.0/issue-965 new file mode 100644 index 000000000..6fbbb8acf --- /dev/null +++ b/changelog/0.7.0/issue-965 @@ -0,0 +1,8 @@ +Bugfix: Switch to `default` repo layout for the s3 backend + +The default layout for the s3 backend is now `default` (instead of `s3legacy`). +Also, there's a new `migrate` command to convert an existing repo, it can be +run like this: `restic migrate s3_layout` + +https://github.com/restic/restic/issues/965 +https://github.com/restic/restic/pull/1004 diff --git a/changelog/0.7.0/issue-989 b/changelog/0.7.0/issue-989 new file mode 100644 index 000000000..4e8da055b --- /dev/null +++ b/changelog/0.7.0/issue-989 @@ -0,0 +1,8 @@ +Enhancement: Improve performance of the `find` command + +Improved performance for the `find` command: Restic recognizes paths it has +already checked for the files in question, so the number of backend requests +is reduced a lot. + +https://github.com/restic/restic/issues/989 +https://github.com/restic/restic/pull/993 diff --git a/changelog/0.7.0/pull-975 b/changelog/0.7.0/pull-975 new file mode 100644 index 000000000..24172ac64 --- /dev/null +++ b/changelog/0.7.0/pull-975 @@ -0,0 +1,4 @@ +Enhancement: Add new backend for OpenStack Swift + +https://github.com/restic/restic/pull/975 +https://github.com/restic/restic/pull/648 diff --git a/changelog/0.7.0/pull-998 b/changelog/0.7.0/pull-998 new file mode 100644 index 000000000..0609030d4 --- /dev/null +++ b/changelog/0.7.0/pull-998 @@ -0,0 +1,5 @@ +Enhancement: Improve performance of the fuse mount + +Listing directories which contain large files now is significantly faster. + +https://github.com/restic/restic/pull/998 diff --git a/changelog/0.7.1/issue-1055 b/changelog/0.7.1/issue-1055 new file mode 100644 index 000000000..738475614 --- /dev/null +++ b/changelog/0.7.1/issue-1055 @@ -0,0 +1,10 @@ +Enhancement: Create subdirs below `data/` for local/sftp backends + +The local and sftp backends now create the subdirs below `data/` on +open/init. This way, restic makes sure that they always exist. This is +connected to an issue for the sftp server: + +https://github.com/restic/rest-server/pull/11#issuecomment-309879710 +https://github.com/restic/restic/issues/1055 +https://github.com/restic/restic/pull/1077 +https://github.com/restic/restic/pull/1105 diff --git a/changelog/0.7.1/issue-1067 b/changelog/0.7.1/issue-1067 new file mode 100644 index 000000000..e7acecf41 --- /dev/null +++ b/changelog/0.7.1/issue-1067 @@ -0,0 +1,8 @@ +Enhancement: Allow loading credentials for s3 from IAM + +When no S3 credentials are specified in the environment variables, restic +now tries to load credentials from an IAM instance profile when the s3 +backend is used. + +https://github.com/restic/restic/issues/1067 +https://github.com/restic/restic/pull/1086 diff --git a/changelog/0.7.1/issue-1073 b/changelog/0.7.1/issue-1073 new file mode 100644 index 000000000..048758662 --- /dev/null +++ b/changelog/0.7.1/issue-1073 @@ -0,0 +1,8 @@ +Enhancement: Add `migrate` cmd to migrate from `s3legacy` to `default` layout + +The `migrate` command for chaning the `s3legacy` layout to the `default` layout +for s3 backends has been improved: It can now be restarted with `restic migrate +--force s3_layout` and automatically retries operations on error. + +https://github.com/restic/restic/issues/1073 +https://github.com/restic/restic/pull/1075 diff --git a/changelog/0.7.1/issue-1081 b/changelog/0.7.1/issue-1081 new file mode 100644 index 000000000..bef658956 --- /dev/null +++ b/changelog/0.7.1/issue-1081 @@ -0,0 +1,4 @@ +Enhancement: Clarify semantic for `--tasg` for the `forget` command + +https://github.com/restic/restic/issues/1081 +https://github.com/restic/restic/pull/1090 diff --git a/changelog/0.7.1/plul-1080 b/changelog/0.7.1/plul-1080 new file mode 100644 index 000000000..3debc67aa --- /dev/null +++ b/changelog/0.7.1/plul-1080 @@ -0,0 +1,5 @@ +Enhancement: Ignore chmod() errors on filesystems which do not support it + +https://github.com/restic/restic/pull/1080 +https://github.com/restic/restic/pull/1112 + diff --git a/changelog/0.7.1/pull-1082 b/changelog/0.7.1/pull-1082 new file mode 100644 index 000000000..e49a7d812 --- /dev/null +++ b/changelog/0.7.1/pull-1082 @@ -0,0 +1,3 @@ +Enhancement: Print stats on SIGINFO on Darwin and FreeBSD (ctrl+t) + +https://github.com/restic/restic/pull/1082 diff --git a/changelog/0.7.1/pull-1115 b/changelog/0.7.1/pull-1115 new file mode 100644 index 000000000..580528ef9 --- /dev/null +++ b/changelog/0.7.1/pull-1115 @@ -0,0 +1,9 @@ +Bugfix: Fix `prune`, only include existing files in indexes + +A bug was found (and corrected) in the index rebuilding after prune, which led +to indexes which include blobs that were not present in the repo any more. +There were already checks in place which detected this situation and aborted +with an error message. A new run of either `prune` or `rebuild-index` corrected +the index files. This is now fixed and a test has been added to detect this. + +https://github.com/restic/restic/pull/1115 diff --git a/changelog/0.7.2/issue-1132 b/changelog/0.7.2/issue-1132 new file mode 100644 index 000000000..1c40e84b7 --- /dev/null +++ b/changelog/0.7.2/issue-1132 @@ -0,0 +1,8 @@ +Enhancement: Make `key` command always prompt for a password + +The `key` command now prompts for a password even if the original password +to access a repo has been specified via the `RESTIC_PASSWORD` environment +variable or a password file. + +https://github.com/restic/restic/issues/1132 +https://github.com/restic/restic/pull/1133 diff --git a/changelog/0.7.2/issue-1167 b/changelog/0.7.2/issue-1167 new file mode 100644 index 000000000..aff17ca22 --- /dev/null +++ b/changelog/0.7.2/issue-1167 @@ -0,0 +1,8 @@ +Bugfix: Do not create a local repo unless `init` is used + +When a restic command other than `init` is used with a local repository and the +repository directory does not exist, restic creates the directory structure. +That's an error, only the `init` command should create the dir. + +https://github.com/restic/restic/issues/1167 +https://github.com/restic/restic/pull/1182 diff --git a/changelog/0.7.2/issue-1179 b/changelog/0.7.2/issue-1179 new file mode 100644 index 000000000..d86b353d1 --- /dev/null +++ b/changelog/0.7.2/issue-1179 @@ -0,0 +1,4 @@ +Enhancement: Resolve name conflicts, append a counter + +https://github.com/restic/restic/issues/1179 +https://github.com/restic/restic/pull/1209 diff --git a/changelog/0.7.2/issue-1208 b/changelog/0.7.2/issue-1208 new file mode 100644 index 000000000..fdd9489d9 --- /dev/null +++ b/changelog/0.7.2/issue-1208 @@ -0,0 +1,7 @@ +Enhancement: Add `--compact` to `snapshots` command + +The option `--compact` was added to the `snapshots` command to get a better +overview of the snapshots in a repo. It limits each snapshot to a single line. + +https://github.com/restic/restic/issues/1218 +https://github.com/restic/restic/pull/1223 diff --git a/changelog/0.7.2/issue-317 b/changelog/0.7.2/issue-317 new file mode 100644 index 000000000..710c131fa --- /dev/null +++ b/changelog/0.7.2/issue-317 @@ -0,0 +1,10 @@ +Enhancement: Add `--exclude-caches` and `--exclude-if-present` + +A new option `--exclude-caches` was added that allows excluding cache +directories (that are tagged as such). This is a special case of a more generic +option `--exclude-if-present` which excludes a directory if a file with a +specific name (and contents) is present. + +https://github.com/restic/restic/issues/317 +https://github.com/restic/restic/pull/1170 +https://github.com/restic/restic/pull/1224 diff --git a/changelog/0.7.2/issues-697 b/changelog/0.7.2/issues-697 new file mode 100644 index 000000000..50bab3990 --- /dev/null +++ b/changelog/0.7.2/issues-697 @@ -0,0 +1,4 @@ +Enhancement: Automatically generate man pages for all restic commands + +https://github.com/restic/restic/issues/697 +https://github.com/restic/restic/pull/1147 diff --git a/changelog/0.7.2/pull-1044 b/changelog/0.7.2/pull-1044 new file mode 100644 index 000000000..97250cf6b --- /dev/null +++ b/changelog/0.7.2/pull-1044 @@ -0,0 +1,3 @@ +Enhancement: Improve `restore`, do not traverse/load excluded directories + +https://github.com/restic/restic/pull/1044 diff --git a/changelog/0.7.2/pull-1061 b/changelog/0.7.2/pull-1061 new file mode 100644 index 000000000..3ec247c67 --- /dev/null +++ b/changelog/0.7.2/pull-1061 @@ -0,0 +1,3 @@ +Enhancement: Add Dockerfile and official Docker image + +https://github.com/restic/restic/pull/1061 diff --git a/changelog/0.7.2/pull-1126 b/changelog/0.7.2/pull-1126 new file mode 100644 index 000000000..fe6f83e4f --- /dev/null +++ b/changelog/0.7.2/pull-1126 @@ -0,0 +1,7 @@ +Enhancement: Use the standard Go git repository layout, use `dep` for vendoring + +The git repository layout was changed to resemble the layout typically used in +Go projects, we're not using `gb` for building restic any more and vendoring +the dependencies is now taken care of by `dep`. + +https://github.com/restic/restic/pull/1126 diff --git a/changelog/0.7.2/pull-1134 b/changelog/0.7.2/pull-1134 new file mode 100644 index 000000000..c1cd9c5bd --- /dev/null +++ b/changelog/0.7.2/pull-1134 @@ -0,0 +1,5 @@ +Enhancement: Add support for storing backups on Google Cloud Storage + +https://github.com/restic/restic/pull/1134 +https://github.com/restic/restic/pull/1052 +https://github.com/restic/restic/issues/211 diff --git a/changelog/0.7.2/pull-1144 b/changelog/0.7.2/pull-1144 new file mode 100644 index 000000000..3588739e1 --- /dev/null +++ b/changelog/0.7.2/pull-1144 @@ -0,0 +1,3 @@ +Enhancement: Properly report errors when reading files with exclude patterns. + +https://github.com/restic/restic/pull/1144 diff --git a/changelog/0.7.2/pull-1149 b/changelog/0.7.2/pull-1149 new file mode 100644 index 000000000..b271a6066 --- /dev/null +++ b/changelog/0.7.2/pull-1149 @@ -0,0 +1,8 @@ +Enhancement: Add support for storing backups on Microsoft Azure Blob Storage + +The library we're using to access the service requires Go 1.8, so restic now +needs at least Go 1.8. + +https://github.com/restic/restic/pull/1149 +https://github.com/restic/restic/pull/1059 +https://github.com/restic/restic/issues/609 diff --git a/changelog/0.7.2/pull-1164 b/changelog/0.7.2/pull-1164 new file mode 100644 index 000000000..95a06b0a8 --- /dev/null +++ b/changelog/0.7.2/pull-1164 @@ -0,0 +1,3 @@ +Bugfix: Make the `key remove` command behave as documented + +https://github.com/restic/restic/pull/1164 diff --git a/changelog/0.7.2/pull-1191 b/changelog/0.7.2/pull-1191 new file mode 100644 index 000000000..25bb4d3f5 --- /dev/null +++ b/changelog/0.7.2/pull-1191 @@ -0,0 +1,8 @@ +Bugfix: Make sure to write profiling files on interrupt + +Since a few releases restic had the ability to write profiling files for memory +and CPU usage when `debug` is enabled. It was discovered that when restic is +interrupted (ctrl+c is pressed), the proper shutdown hook is not run. This is +now corrected. + +https://github.com/restic/restic/pull/1191 diff --git a/changelog/0.7.2/pull-1196 b/changelog/0.7.2/pull-1196 new file mode 100644 index 000000000..7a2520529 --- /dev/null +++ b/changelog/0.7.2/pull-1196 @@ -0,0 +1,3 @@ +Enhancement: Add `--group-by` to `forget` command for flexible grouping + +https://github.com/restic/restic/pull/1196 diff --git a/changelog/0.7.2/pull-1203 b/changelog/0.7.2/pull-1203 new file mode 100644 index 000000000..44d15a97a --- /dev/null +++ b/changelog/0.7.2/pull-1203 @@ -0,0 +1,5 @@ +Enhancement: Print stats on all BSD systems when SIGINFO (ctrl+t) is received + +https://github.com/restic/restic/pull/1203 +https://github.com/restic/restic/pull/1082#issuecomment-326279920 + diff --git a/changelog/0.7.2/pull-1205 b/changelog/0.7.2/pull-1205 new file mode 100644 index 000000000..be80c8217 --- /dev/null +++ b/changelog/0.7.2/pull-1205 @@ -0,0 +1,3 @@ +Enhancement: Allow specifying time/date for a backup with `--time` + +https://github.com/restic/restic/pull/1205 diff --git a/changelog/0.7.3/issue-1246 b/changelog/0.7.3/issue-1246 new file mode 100644 index 000000000..550d71089 --- /dev/null +++ b/changelog/0.7.3/issue-1246 @@ -0,0 +1,9 @@ +Bugfix: List all files stored in Google Cloud Storage + +For large backups stored in Google Cloud Storage, the `prune` command fails +because listing only returns the first 1000 files. This has been corrected, no +data is lost in the process. In addition, a plausibility check was added to +`prune`. + +https://github.com/restic/restic/issues/1246 +https://github.com/restic/restic/pull/1247 diff --git a/changelog/0.8.0/issue-1102 b/changelog/0.8.0/issue-1102 new file mode 100644 index 000000000..6c7f6ed57 --- /dev/null +++ b/changelog/0.8.0/issue-1102 @@ -0,0 +1,9 @@ +Enhancement: Add subdirectory `ids` to fuse mount + +The fuse mount now has an `ids` subdirectory which contains the snapshots below +their (short) IDs. + +https://github.com/restic/restic/issues/1102 +https://github.com/restic/restic/pull/1299 +https://github.com/restic/restic/pull/1320 + diff --git a/changelog/0.8.0/issue-1114 b/changelog/0.8.0/issue-1114 new file mode 100644 index 000000000..8722a112c --- /dev/null +++ b/changelog/0.8.0/issue-1114 @@ -0,0 +1,10 @@ +Enhancement: Add `--cacert` to specify TLS certificates to check against + +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). + +https://github.com/restic/restic/issues/1114 +https://github.com/restic/restic/pull/1276 + + diff --git a/changelog/0.8.0/issue-1216 b/changelog/0.8.0/issue-1216 new file mode 100644 index 000000000..44fce448c --- /dev/null +++ b/changelog/0.8.0/issue-1216 @@ -0,0 +1,9 @@ +Enhancement: Add upload/download limiting + +We've added support for rate limiting through `--limit-upload` and +`--limit-download` flags. + +https://github.com/restic/restic/issues/1216 +https://github.com/restic/restic/pull/1336 +https://github.com/restic/restic/pull/1358 + diff --git a/changelog/0.8.0/issue-1256 b/changelog/0.8.0/issue-1256 new file mode 100644 index 000000000..e42dffc29 --- /dev/null +++ b/changelog/0.8.0/issue-1256 @@ -0,0 +1,7 @@ +Bugfix: Re-enable workaround for S3 backend + +We've re-enabled a workaround for `minio-go` (the library we're using to +access s3 backends), this reduces memory usage. + +https://github.com/restic/restic/issues/1256 +https://github.com/restic/restic/pull/1267 diff --git a/changelog/0.8.0/issue-1271 b/changelog/0.8.0/issue-1271 new file mode 100644 index 000000000..f818b4202 --- /dev/null +++ b/changelog/0.8.0/issue-1271 @@ -0,0 +1,6 @@ +Enhancement: Cache results for excludes for `backup` + +The `backup` command now caches the result of excludes for a directory. + +https://github.com/restic/restic/issues/1271 +https://github.com/restic/restic/pull/1326 diff --git a/changelog/0.8.0/issue-1274 b/changelog/0.8.0/issue-1274 new file mode 100644 index 000000000..97f05e1dd --- /dev/null +++ b/changelog/0.8.0/issue-1274 @@ -0,0 +1,9 @@ +Enhancement: Add `generate` command, replaces `manpage` and `autocomplete` + +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` + +https://github.com/restic/restic/issues/1274 +https://github.com/restic/restic/pull/1282 diff --git a/changelog/0.8.0/issue-1291 b/changelog/0.8.0/issue-1291 new file mode 100644 index 000000000..04eff4e8c --- /dev/null +++ b/changelog/0.8.0/issue-1291 @@ -0,0 +1,8 @@ +Bugfix: Reuse backend TCP connections to BackBlaze B2 + +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. + +https://github.com/restic/restic/issues/1291 +https://github.com/restic/restic/pull/1301 diff --git a/changelog/0.8.0/issue-1367 b/changelog/0.8.0/issue-1367 new file mode 100644 index 000000000..5b1c3f211 --- /dev/null +++ b/changelog/0.8.0/issue-1367 @@ -0,0 +1,7 @@ +Enhancement: Allow comments in files read from via `--file-from` + +When the list of files/dirs to be saved is read from a file with +`--files-from`, comment lines (starting with `#`) are now ignored. + +https://github.com/restic/restic/issues/1367 +https://github.com/restic/restic/pull/1368 diff --git a/changelog/0.8.0/issue-1445 b/changelog/0.8.0/issue-1445 new file mode 100644 index 000000000..7027e5cb6 --- /dev/null +++ b/changelog/0.8.0/issue-1445 @@ -0,0 +1,18 @@ +Security: Prevent writing outside the target directory during restore + +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 systems which restores files from the repo. In +addition, the attackers need to be able to create 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! + +https://github.com/restic/restic/pull/1445 diff --git a/changelog/0.8.0/issue-448 b/changelog/0.8.0/issue-448 new file mode 100644 index 000000000..535d5dd1e --- /dev/null +++ b/changelog/0.8.0/issue-448 @@ -0,0 +1,9 @@ +Enhancement: sftp backend prompts for password + +The sftp backend now prompts for the password if a password is necessary for +login. + +https://github.com/restic/restic/issues/448 +https://github.com/restic/restic/pull/1270 + + diff --git a/changelog/0.8.0/issue-510 b/changelog/0.8.0/issue-510 new file mode 100644 index 000000000..702601e99 --- /dev/null +++ b/changelog/0.8.0/issue-510 @@ -0,0 +1,7 @@ +Enhancement: Add `dump` command + +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`. + +https://github.com/restic/restic/issues/510 +https://github.com/restic/restic/pull/1346 diff --git a/changelog/0.8.0/pull-1040 b/changelog/0.8.0/pull-1040 new file mode 100644 index 000000000..b39ee2fee --- /dev/null +++ b/changelog/0.8.0/pull-1040 @@ -0,0 +1,23 @@ +Enhancement: Add local metadata cache + +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. Cache directories for repos that haven't been used recently can +automatically be removed by restic with the `--cleanup-cache` option. + +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. + +https://github.com/restic/restic/pull/1040 +https://github.com/restic/restic/issues/29 +https://github.com/restic/restic/issues/738 +https://github.com/restic/restic/issues/282 +https://github.com/restic/restic/pull/1287 +https://github.com/restic/restic/pull/1436 +https://github.com/restic/restic/pull/1265 diff --git a/changelog/0.8.0/pull-1249 b/changelog/0.8.0/pull-1249 new file mode 100644 index 000000000..48db604b4 --- /dev/null +++ b/changelog/0.8.0/pull-1249 @@ -0,0 +1,6 @@ +Enhancement: Add `latest` symlink in fuse mount + +The directory structure in the fuse mount now exposes a symlink `latest` +which points to the latest snapshot in that particular directory. + +https://github.com/restic/restic/pull/1249 diff --git a/changelog/0.8.0/pull-1269 b/changelog/0.8.0/pull-1269 new file mode 100644 index 000000000..fd36334bc --- /dev/null +++ b/changelog/0.8.0/pull-1269 @@ -0,0 +1,6 @@ +Enhancement: Add `--compact` to `forget` command + +The option `--compact` was added to the `forget` command to provide the same +compact view as the `snapshots` command. + +https://github.com/restic/restic/pull/1269 diff --git a/changelog/0.8.0/pull-1281 b/changelog/0.8.0/pull-1281 new file mode 100644 index 000000000..1f5a8ab06 --- /dev/null +++ b/changelog/0.8.0/pull-1281 @@ -0,0 +1,7 @@ +Enhancement: Google Cloud Storage backend needs less permissions + +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. + +https://github.com/restic/restic/pull/1281 diff --git a/changelog/0.8.0/pull-1317 b/changelog/0.8.0/pull-1317 new file mode 100644 index 000000000..e3249c9ca --- /dev/null +++ b/changelog/0.8.0/pull-1317 @@ -0,0 +1,7 @@ +Bugfix: Run prune when `forget --prune` is called with just snapshot IDs + +A 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. + +https://github.com/restic/restic/pull/1317 diff --git a/changelog/0.8.0/pull-1319 b/changelog/0.8.0/pull-1319 new file mode 100644 index 000000000..d74a3f947 --- /dev/null +++ b/changelog/0.8.0/pull-1319 @@ -0,0 +1,8 @@ +Enhancement: Make `check` print `no errors found` explicitly + +The `check` command now explicetly prints `No errors were found` when no errors +could be found. + +https://github.com/restic/restic/pull/1319 +https://github.com/restic/restic/issues/1303 + diff --git a/changelog/0.8.0/pull-1353 b/changelog/0.8.0/pull-1353 new file mode 100644 index 000000000..ac3423329 --- /dev/null +++ b/changelog/0.8.0/pull-1353 @@ -0,0 +1,3 @@ +Enhancement: Retry failed backend requests + +https://github.com/restic/restic/pull/1353 diff --git a/changelog/0.8.0/pull-1437 b/changelog/0.8.0/pull-1437 new file mode 100644 index 000000000..906504cdc --- /dev/null +++ b/changelog/0.8.0/pull-1437 @@ -0,0 +1,10 @@ +Bugfix: Remove implicit path `/restic` for the s3 backend + +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` + +https://github.com/restic/restic/pull/1437 +https://github.com/restic/restic/issues/1292 diff --git a/changelog/0.8.1/issue-1457 b/changelog/0.8.1/issue-1457 new file mode 100644 index 000000000..90d6ab86b --- /dev/null +++ b/changelog/0.8.1/issue-1457 @@ -0,0 +1,4 @@ +Bugfix: Improve s3 backend with DigitalOcean Spaces + +https://github.com/restic/restic/pull/1459 +https://github.com/restic/restic/issues/1457 diff --git a/changelog/0.8.1/pull-1436 b/changelog/0.8.1/pull-1436 new file mode 100644 index 000000000..4098575bd --- /dev/null +++ b/changelog/0.8.1/pull-1436 @@ -0,0 +1,9 @@ +Enhancement: 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. + +https://github.com/restic/restic/pull/1436 diff --git a/changelog/0.8.1/pull-1439 b/changelog/0.8.1/pull-1439 new file mode 100644 index 000000000..50c23a5ca --- /dev/null +++ b/changelog/0.8.1/pull-1439 @@ -0,0 +1,6 @@ +Enhancement: Improve cancellation logic + +The cancellation logic was improved, restic can now shut down cleanly when +requested to do so (e.g. via ctrl+c). + +https://github.com/restic/restic/pull/1439 diff --git a/changelog/0.8.1/pull-1452 b/changelog/0.8.1/pull-1452 new file mode 100644 index 000000000..a3ee2eff6 --- /dev/null +++ b/changelog/0.8.1/pull-1452 @@ -0,0 +1,9 @@ +Change: 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. + +https://github.com/restic/restic/pull/1452 diff --git a/changelog/0.8.1/pull-1454 b/changelog/0.8.1/pull-1454 new file mode 100644 index 000000000..f5f99614f --- /dev/null +++ b/changelog/0.8.1/pull-1454 @@ -0,0 +1,6 @@ +Bugfix: Correct cache dir location for Windows and Darwin + +The cache directory on Windows and Darwin was not correct, instead the +directory `.cache` was used. + +https://github.com/restic/restic/pull/1454 diff --git a/changelog/0.8.1/pull-1459 b/changelog/0.8.1/pull-1459 new file mode 100644 index 000000000..ea9e55c70 --- /dev/null +++ b/changelog/0.8.1/pull-1459 @@ -0,0 +1,9 @@ +Bugfix: 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. + +https://github.com/restic/restic/pull/1459 +https://github.com/restic/restic/issues/1457 +https://github.com/restic/restic/issues/1466 diff --git a/changelog/0.8.1/pull-1462 b/changelog/0.8.1/pull-1462 new file mode 100644 index 000000000..9c83941d4 --- /dev/null +++ b/changelog/0.8.1/pull-1462 @@ -0,0 +1,8 @@ +Enhancement: Add the `diff` command + +The command `diff` was added, it allows comparing two snapshots and listing +all differences. + +https://github.com/restic/restic/issues/11 +https://github.com/restic/restic/issues/1460 +https://github.com/restic/restic/pull/1462 diff --git a/changelog/CHANGELOG.tmpl b/changelog/CHANGELOG.tmpl new file mode 100644 index 000000000..343cad6ba --- /dev/null +++ b/changelog/CHANGELOG.tmpl @@ -0,0 +1,32 @@ +{{- range $changes := . }}{{ with $changes -}} +Changelog for restic {{ .Version }} ({{ .Date }}) +======================================= + +The following sections list the changes in restic {{ .Version }} relevant to +restic users. The changes are ordered by importance. + +Summary +------- +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .TypeShort }} #{{ .PrimaryID }}: {{ .Title }} +{{- end }}{{ end }} + +Details +------- +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .Type }} #{{ .PrimaryID }}: {{ .Title }} +{{ range $par := .Paragraphs }} + {{ wrap $par 80 3 }} +{{ end -}} +{{ range $id := .Issues }} + https://github.com/restic/restic/issues/{{ $id -}} +{{ end -}} +{{ range $id := .PRs }} + https://github.com/restic/restic/pull/{{ $id -}} +{{ end -}} +{{ range $url := .OtherURLs }} + {{ $url -}} +{{ end }} +{{ end }}{{ end }} + +{{ end }}{{ end -}} diff --git a/changelog/changelog-entry.tmpl b/changelog/changelog-entry.tmpl new file mode 100644 index 000000000..ec5952950 --- /dev/null +++ b/changelog/changelog-entry.tmpl @@ -0,0 +1,12 @@ +Bugfix: Fix behavior for foobar (in present tense) + +We've fixed the behavior for foobar, a long-standing annoyance for restic +users. + +The text in the paragraphs is written in past tense. The last section is a list +of issue URLs, PR URLs and other URLs. The first issue ID (or the first PR ID, +in case there aren't any issue links) is used as the primary ID. + +https://github.com/restic/restic/issues/1234 +https://github.com/restic/restic/pull/55555 +https://forum.restic/.net/foo/bar/baz diff --git a/changelog/changelog-github.tmpl b/changelog/changelog-github.tmpl new file mode 100644 index 000000000..59ecd1c0e --- /dev/null +++ b/changelog/changelog-github.tmpl @@ -0,0 +1,32 @@ +{{- range $changes := . }}{{ with $changes -}} +Changelog for restic {{ .Version }} ({{ .Date }}) +======================================= + +The following sections list the changes in restic {{ .Version }} relevant to +restic users. The changes are ordered by importance. + +Summary +------- +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .TypeShort }} [#{{ .PrimaryID }}]({{ .PrimaryURL }}): {{ .Title }} +{{- end }}{{ end }} + +Details +------- +{{ range $entry := .Entries }}{{ with $entry }} + * {{ .Type }} #{{ .PrimaryID }}: {{ .Title }} +{{ range $par := .Paragraphs }} + {{ $par }} +{{ end }} + {{ range $id := .Issues -}} +[{{ $id }}](https://github.com/restic/restic/issues/{{ $id -}}) +{{- end -}} +{{ range $id := .PRs -}} +{{ ` ` }}[#{{ $id }}](https://github.com/restic/restic/pull/{{ $id -}}) +{{- end -}} +{{ ` ` }}{{ range $url := .OtherURLs -}} +{{ $url -}} +{{- end }} +{{ end }}{{ end }} + +{{ end }}{{ end -}} diff --git a/changelog/releases b/changelog/releases new file mode 100644 index 000000000..04c0914f7 --- /dev/null +++ b/changelog/releases @@ -0,0 +1,13 @@ +# This file lists all versions for the changelog. Each line consists of the +# version string, followed by an optional release date. +# +# The resulting changelog generated by `calens` will list all versions in +# exactly this order. +0.8.1 +0.8.0 2017-11-26 +0.7.3 2017-09-20 +0.7.2 2017-09-13 +0.7.1 2017-07-22 +0.7.0 2017-07-01 +0.6.1 2017-06-01 +0.6.0 2017-05-29 diff --git a/run_integration_tests.go b/run_integration_tests.go index 9010d4b1b..abf655407 100644 --- a/run_integration_tests.go +++ b/run_integration_tests.go @@ -96,6 +96,7 @@ func (env *TravisEnvironment) Prepare() error { "github.com/NebulousLabs/glyphcheck", "github.com/golang/dep/cmd/dep", "github.com/restic/rest-server/cmd/rest-server", + "github.com/restic/calens", } for _, pkg := range pkgs { @@ -285,6 +286,11 @@ func (env *TravisEnvironment) RunTests() error { return err } + // check that the entries in changelog/ are valid + if err := run("calens"); err != nil { + fmt.Fprintf(os.Stderr, "calens failed, files in changelog/ are not valid\n") + } + return nil } diff --git a/scripts/release.go b/scripts/release.go index 94aaadc15..429e674ce 100644 --- a/scripts/release.go +++ b/scripts/release.go @@ -23,6 +23,7 @@ var opts = struct { IgnoreBranchName bool IgnoreUncommittedChanges bool IgnoreChangelogVersion bool + IgnoreChangelogCurrent bool tarFilename string buildDir string @@ -33,7 +34,8 @@ var versionRegex = regexp.MustCompile(`^\d+\.\d+\.\d+$`) func init() { pflag.BoolVar(&opts.IgnoreBranchName, "ignore-branch-name", false, "allow releasing from other branches as 'master'") pflag.BoolVar(&opts.IgnoreUncommittedChanges, "ignore-uncommitted-changes", false, "allow uncommitted changes") - pflag.BoolVar(&opts.IgnoreChangelogVersion, "ignore-changelgo-version", false, "ignore missing entry in CHANGELOG.md") + pflag.BoolVar(&opts.IgnoreChangelogVersion, "ignore-changelog-version", false, "ignore missing entry in CHANGELOG.md") + pflag.BoolVar(&opts.IgnoreChangelogCurrent, "ignore-changelog-current", false, "ignore check if CHANGELOG.md is up to date") pflag.Parse() } @@ -151,7 +153,22 @@ func preCheckVersionExists() { } } -func preCheckChangelog() { +func preCheckChangelogCurrent() { + if opts.IgnoreChangelogCurrent { + return + } + + // regenerate changelog + run("calens", "--output", "CHANGELOG.md") + + // check for uncommitted changes in changelog + if len(uncommittedChanges("CHANGELOG.md")) > 0 { + msg("committing file CHANGELOG.md") + run("git", "commit", "-m", fmt.Sprintf("Generate CHANGELOG.md for %v", opts.Version), "CHANGELOG.md") + } +} + +func preCheckChangelogVersion() { if opts.IgnoreChangelogVersion { return } @@ -168,7 +185,7 @@ func preCheckChangelog() { die("error scanning: %v", sc.Err()) } - if strings.TrimSpace(sc.Text()) == fmt.Sprintf("Important Changes in %v", opts.Version) { + if strings.Contains(strings.TrimSpace(sc.Text()), fmt.Sprintf("Changelog for restic %v", opts.Version)) { return } } @@ -189,6 +206,7 @@ func generateFiles() { "--bash-completion", "doc/bash-completion.sh") rm("restic-generate.temp") + run("git", "add", "doc") changes := uncommittedChanges("doc") if len(changes) > 0 { msg("committing manpages and auto-completion") @@ -287,7 +305,8 @@ func main() { preCheckBranchMaster() preCheckUncommittedChanges() preCheckVersionExists() - preCheckChangelog() + preCheckChangelogCurrent() + preCheckChangelogVersion() generateFiles() updateVersion()