diff --git a/changelog/unreleased/issue-1495 b/changelog/unreleased/issue-1495 index 5aa682efa..b29f0d711 100644 --- a/changelog/unreleased/issue-1495 +++ b/changelog/unreleased/issue-1495 @@ -1,7 +1,7 @@ -Enhancement: Snapshots are sorted by timestamp in the output of `restic find` +Enhancement: Sort snapshots by timestamp in `restic find` -The `find` command printed snapshots in an arbitrary order. Now restic prints -the snapshots sorted by timestamp. +The `find` command used to print snapshots in an arbitrary order. Restic now +prints snapshots sorted by timestamp. https://github.com/restic/restic/issues/1495 https://github.com/restic/restic/pull/4409 diff --git a/changelog/unreleased/issue-1759 b/changelog/unreleased/issue-1759 index 1b698f845..6717dfe66 100644 --- a/changelog/unreleased/issue-1759 +++ b/changelog/unreleased/issue-1759 @@ -4,12 +4,13 @@ The `rebuild-index` command has been renamed to `repair index`. The old name will still work, but is deprecated. When a snapshot was damaged, the only option up to now was to completely forget -the snapshot, even if only some unimportant file was damaged. +the snapshot, even if only some unimportant files in it were damaged and other +files were still fine. -We've added a `repair snapshots` command, which can repair snapshots by removing -damaged directories and missing files contents. Note that using this command -can lead to data loss! Please see the "Troubleshooting" section in the documentation -for more details. +Restic now has a `repair snapshots` command, which can salvage any non-damaged +files and parts of files in the snapshots by removing damaged directories and +missing file contents. Please note that the damaged data may still be lost +and see the "Troubleshooting" section in the documentation for more details. https://github.com/restic/restic/issues/1759 https://github.com/restic/restic/issues/1714 diff --git a/changelog/unreleased/issue-1926 b/changelog/unreleased/issue-1926 index 9f172b1f8..96bc16240 100644 --- a/changelog/unreleased/issue-1926 +++ b/changelog/unreleased/issue-1926 @@ -1,8 +1,8 @@ -Enhancement: Certificates can be passed through environment variables +Enhancement: Allow certificate paths to be passed through environment variables -Restic will now read the paths to the certificates from the environment -variables `RESTIC_CACERT` or `RESTIC_TLS_CLIENT_CERT` if `--cacert` or -`--tls-client-cert` are not specified. +Restic will now read paths to certificates from the environment variables +`RESTIC_CACERT` or `RESTIC_TLS_CLIENT_CERT` if `--cacert` or `--tls-client-cert` +are not specified. https://github.com/restic/restic/issues/1926 https://github.com/restic/restic/pull/4384 diff --git a/changelog/unreleased/issue-2359 b/changelog/unreleased/issue-2359 index 0399a96f1..9a62aedfb 100644 --- a/changelog/unreleased/issue-2359 +++ b/changelog/unreleased/issue-2359 @@ -1,9 +1,9 @@ -Enhancement: Provide multi-platform Docker containers +Enhancement: Provide multi-platform Docker images -The official Docker containers are now built for the architectures linux/386, +The official Docker images are now built for the architectures linux/386, linux/amd64, linux/arm and linux/arm64. -As an alternative to the Docker Hub, the Docker containers are now also +As an alternative to the Docker Hub, the Docker images are also available on ghcr.io, the GitHub Container Registry. https://github.com/restic/restic/issues/2359 diff --git a/changelog/unreleased/issue-2468 b/changelog/unreleased/issue-2468 index 56555a136..512c5e76a 100644 --- a/changelog/unreleased/issue-2468 +++ b/changelog/unreleased/issue-2468 @@ -1,10 +1,10 @@ Enhancement: Add support for non-global Azure clouds -Restic backups on Azure only supported storages using the global domain +The `azure` backend previously only supported storages using the global domain `core.windows.net`. This meant that backups to other domains such as Azure -China (`core.chinacloudapi.cn') or Azure Germany (`core.cloudapi.de`) were +China (`core.chinacloudapi.cn`) or Azure Germany (`core.cloudapi.de`) were not supported. Restic now allows overriding the global domain using the -environment variable `AZURE_ENDPOINT_SUFFIX'. +environment variable `AZURE_ENDPOINT_SUFFIX`. https://github.com/restic/restic/issues/2468 https://github.com/restic/restic/pull/4387 diff --git a/changelog/unreleased/issue-2565 b/changelog/unreleased/issue-2565 index 62c8c3ca1..d7d5a25eb 100644 --- a/changelog/unreleased/issue-2565 +++ b/changelog/unreleased/issue-2565 @@ -1,9 +1,10 @@ Bugfix: Support "unlimited" in `forget --keep-*` options -Restic would forget snapshots that should have been kept when a negative value -was passed to the `--keep-*` options. Negative values are now forbidden. To -keep all snapshots, the special value `unlimited` is now supported. For -example, `--keep-monthly unlimited` will keep all monthly snapshots. +Restic would previously forget snapshots that should have been kept when a +negative value was passed to the `--keep-*` options. Negative values are now +forbidden. To keep all snapshots, the special value `unlimited` is now +supported. For example, `--keep-monthly unlimited` will keep all monthly +snapshots. https://github.com/restic/restic/issues/2565 https://github.com/restic/restic/pull/4234 diff --git a/changelog/unreleased/issue-3311 b/changelog/unreleased/issue-3311 index 4dfe502f7..af619b157 100644 --- a/changelog/unreleased/issue-3311 +++ b/changelog/unreleased/issue-3311 @@ -1,12 +1,12 @@ Bugfix: Support non-UTF8 paths as symlink target -Restic versions before 0.16.0 did not correctly backup and restore symlinks -that contain a non-UTF8 target. Note that this only affects system that still -use a non-Unicode encoding for filesystem paths. +Earlier restic versions did not correctly `backup` and `restore` symlinks that +contain a non-UTF8 target. Note that this only affected systems that still use +a non-Unicode encoding for filesystem paths. -We have extended the repository format to add support for such symlinks. Please -note that at least restic version 0.16.0 must be used for both backup and -restore to correctly handle non-UTF8 symlink targets. +The repository format is now extended to add support for such symlinks. Please +note that snapshots must have been created with at least restic version 0.16.0 +for `restore` to correctly handle non-UTF8 symlink targets when restoring them. https://github.com/restic/restic/issues/3311 https://github.com/restic/restic/pull/3802 diff --git a/changelog/unreleased/issue-3328 b/changelog/unreleased/issue-3328 index a8ef76d79..a79a4818b 100644 --- a/changelog/unreleased/issue-3328 +++ b/changelog/unreleased/issue-3328 @@ -1,5 +1,9 @@ Enhancement: Reduce memory usage by up to 25% +The in-memory index has been optimized to be more garbage collection friendly. +Restic now defaults to `GOGC=50` to run the Go garbage collector more +frequently. + https://github.com/restic/restic/issues/3328 https://github.com/restic/restic/pull/4352 https://github.com/restic/restic/pull/4353 diff --git a/changelog/unreleased/issue-3397 b/changelog/unreleased/issue-3397 index 391eeb004..31c5e19fb 100644 --- a/changelog/unreleased/issue-3397 +++ b/changelog/unreleased/issue-3397 @@ -1,11 +1,11 @@ -Enhancement: Improve the ETA displayed during backup +Enhancement: Improve accuracy of ETA displayed during backup -Restic's `backup` command displayed an ETA that did not adapt when the rate -of progress made during the backup changed during the course of the -backup. Restic now uses recent progress when computing the ETA. It is -important to realize that the estimate may still be wrong, because restic -cannot predict the future, but the hope is that the ETA will be more -accurate in most cases. +Restic's `backup` command displayed an ETA that did not adapt when the rate of +progress made during the backup changed during the course of the backup. + +Restic now uses recent progress when computing the ETA. It is important to +realize that the estimate may still be wrong, because restic cannot predict +the future, but the hope is that the ETA will be more accurate in most cases. https://github.com/restic/restic/issues/3397 https://github.com/restic/restic/pull/3563 diff --git a/changelog/unreleased/issue-3624 b/changelog/unreleased/issue-3624 index ce3fe57aa..a2a11d2d4 100644 --- a/changelog/unreleased/issue-3624 +++ b/changelog/unreleased/issue-3624 @@ -1,8 +1,8 @@ Enhancement: Keep oldest snapshot when there are not enough snapshots The `forget` command now additionally preserves the oldest snapshot if fewer -snapshots are kept than allowed by the `--keep-*` parameters. This maximizes -amount of history kept while the specified limits are not yet reached. +snapshots than allowed by the `--keep-*` parameters would otherwise be kept. +This maximizes the amount of history kept within the specified limits. https://github.com/restic/restic/issues/3624 https://github.com/restic/restic/pull/4366 diff --git a/changelog/unreleased/issue-3698 b/changelog/unreleased/issue-3698 index 0851d3756..95fc6bd69 100644 --- a/changelog/unreleased/issue-3698 +++ b/changelog/unreleased/issue-3698 @@ -1,7 +1,7 @@ -Enhancement: Add support for Managed / Worload Identity to azure backend +Enhancement: Add support for Managed / Workload Identity to `azure` backend Restic now additionally supports authenticating to Azure using Workload -Identity or Managed Identity credentials which are automatically injected in +Identity or Managed Identity credentials, which are automatically injected in several environments such as a managed Kubernetes cluster. https://github.com/restic/restic/issues/3698 diff --git a/changelog/unreleased/issue-3871 b/changelog/unreleased/issue-3871 index 786e902d4..45131bc19 100644 --- a/changelog/unreleased/issue-3871 +++ b/changelog/unreleased/issue-3871 @@ -2,14 +2,14 @@ Enhancement: Support `:` syntax to select subfolders Commands like `diff` or `restore` always worked with the full snapshot. This did not allow comparing only a specific subfolder or only restoring that folder -(`restore --include subfolder` limits the restored files, but still creates the +(`restore --include subfolder` filters the restored files, but still creates the directories included in `subfolder`). -The commands `diff`, `dump`, `ls`, `restore` now support the -`:` syntax, where `snapshot` is the ID of a snapshot (or +The commands `diff`, `dump`, `ls` and `restore` now support the +`:` syntax, where `snapshot` is the ID of a snapshot (or the string `latest`) and `subfolder` is a path within the snapshot. The commands will then only work with the specified path of the snapshot. The -`subfolder` must be a path to a folder as returned by `ls`. +`subfolder` must be a path to a folder as returned by `ls`. Two examples: `restic restore -t target latest:/some/path` `restic diff 12345678:/some/path 90abcef:/some/path` diff --git a/changelog/unreleased/issue-3941 b/changelog/unreleased/issue-3941 index 011cd9eaa..ff56d52cc 100644 --- a/changelog/unreleased/issue-3941 +++ b/changelog/unreleased/issue-3941 @@ -1,14 +1,17 @@ Enhancement: Support `--group-by` for backup parent selection -The backup command by default selected the parent snapshot based on the hostname -and the backup targets. When the backup path list changed, the backup command -was unable to determine a suitable parent snapshot and had to read all -files again. +Previously, the `backup` command by default selected the parent snapshot based +on the hostname and the backup targets. When the backup path list changed, the +`backup` command was unable to determine a suitable parent snapshot and had to +read all files again. -The new `--group-by` option for the backup command allows filtering snapshots +The new `--group-by` option for the `backup` command allows filtering snapshots for the parent selection by `host`, `paths` and `tags`. It defaults to `host,paths` which selects the latest snapshot with hostname and paths matching -those of the backup run. It should be used consistently with `forget --group-by`. +those of the backup run. This matches the behavior of prior restic versions. + +The new `--group-by` option should be set to the same value as passed to +`forget --group-by`. https://github.com/restic/restic/issues/3941 https://github.com/restic/restic/pull/4081 diff --git a/changelog/unreleased/issue-4130 b/changelog/unreleased/issue-4130 new file mode 100644 index 000000000..eeebf2c62 --- /dev/null +++ b/changelog/unreleased/issue-4130 @@ -0,0 +1,9 @@ +Enhancement: Cancel current command if cache becomes unusable + +If the cache directory was removed or ran out of space while restic was +running, this would previously cause further caching attempts to fail and +thereby drastically slow down the command execution. Now, the currently running +command is instead canceled. + +https://github.com/restic/restic/issues/4130 +https://github.com/restic/restic/pull/4166 diff --git a/changelog/unreleased/issue-4159 b/changelog/unreleased/issue-4159 index 4f91ce240..4ef2fa846 100644 --- a/changelog/unreleased/issue-4159 +++ b/changelog/unreleased/issue-4159 @@ -1,13 +1,12 @@ -Enhancement: Add `--human-readable` flag to `ls` and `find` commands +Enhancement: Add `--human-readable` option to `ls` and `find` commands -Previously, when using the -l option with the ls and find commands, -the displayed size was always in bytes, without an option for a more -human readable format such as MiB or GiB. +Previously, when using the `-l` option with the `ls` and `find` commands, the +displayed size was always in bytes, without an option for a more human readable +format such as MiB or GiB. -The new `--human-readable` option will convert longer size values into -more human friendly values with an appropriate suffix depending on the -output size. For example, a size of `14680064` will be shown as -`14.000 MiB`. +The new `--human-readable` option will convert longer size values into more +human friendly values with an appropriate suffix depending on the output size. +For example, a size of `14680064` will be shown as `14.000 MiB`. https://github.com/restic/restic/issues/4159 https://github.com/restic/restic/pull/4351 diff --git a/changelog/unreleased/issue-4188 b/changelog/unreleased/issue-4188 index dbb26f733..9bd5e6aca 100644 --- a/changelog/unreleased/issue-4188 +++ b/changelog/unreleased/issue-4188 @@ -1,8 +1,8 @@ -Enhancement: `backup` includes restic version in snapshot metadata +Enhancement: Include restic version in snapshot metadata -The restic version used backup the snapshot is now included in its metadata. -The program version is shown when inspecting a snapshot using `restic cat -snapshot ` or `restic snapshots --json`. +The restic version used to backup a snapshot is now included in its metadata +and shown when inspecting a snapshot using `restic cat snapshot ` +or `restic snapshots --json`. https://github.com/restic/restic/issues/4188 https://github.com/restic/restic/pull/4378 diff --git a/changelog/unreleased/issue-4199 b/changelog/unreleased/issue-4199 new file mode 100644 index 000000000..407fa43c6 --- /dev/null +++ b/changelog/unreleased/issue-4199 @@ -0,0 +1,9 @@ +Bugfix: Avoid lock refresh issues on slow network connections + +On network connections with a low upload speed, backups and other operations +could fail with the error message `Fatal: failed to refresh lock in time`. + +This has now been fixed by reworking the lock refresh handling. + +https://github.com/restic/restic/issues/4199 +https://github.com/restic/restic/pull/4304 diff --git a/changelog/unreleased/issue-426 b/changelog/unreleased/issue-426 index 9caf14ef5..f50cddbf7 100644 --- a/changelog/unreleased/issue-426 +++ b/changelog/unreleased/issue-426 @@ -2,7 +2,7 @@ Enhancement: Show progress bar during restore The `restore` command now shows a progress report while restoring files. -Example: [0:42] 5.76% 23 files 12.98 MiB, total 3456 files 23.54 GiB +Example: `[0:42] 5.76% 23 files 12.98 MiB, total 3456 files 23.54 GiB` JSON output is now also supported. diff --git a/changelog/unreleased/issue-4274 b/changelog/unreleased/issue-4274 index 96cb0709d..01c5f2177 100644 --- a/changelog/unreleased/issue-4274 +++ b/changelog/unreleased/issue-4274 @@ -1,10 +1,11 @@ -Bugfix: Improve lock refresh handling when using standby +Bugfix: Improve lock refresh handling after standby If the restic process was stopped or the host running restic entered standby -during a long running operation such as a backup, this resulted in the -operation failing with `Fatal: failed to refresh lock in time`. We've reworked -the lock refresh such that restic first checks whether it is safe to continue -the current operation and only throws an error if not. +during a long running operation such as a backup, this previously resulted in +the operation failing with `Fatal: failed to refresh lock in time`. + +This has now been fixed such that restic first checks whether it is safe to +continue the current operation and only throws an error if not. https://github.com/restic/restic/issues/4274 https://github.com/restic/restic/pull/4374 diff --git a/changelog/unreleased/issue-719 b/changelog/unreleased/issue-719 index 4f28ea83c..897a6bf1f 100644 --- a/changelog/unreleased/issue-719 +++ b/changelog/unreleased/issue-719 @@ -1,7 +1,7 @@ -Enhancement: Add --retry-lock option +Enhancement: Add `--retry-lock` option -This option allows to specify a duration for which restic will wait if there -already exists a conflicting lock within the repository. +This option allows specifying a duration for which restic will wait if the +repository is already locked. https://github.com/restic/restic/issues/719 https://github.com/restic/restic/pull/2214 diff --git a/changelog/unreleased/pull-4166 b/changelog/unreleased/pull-4166 deleted file mode 100644 index 6714fdf7f..000000000 --- a/changelog/unreleased/pull-4166 +++ /dev/null @@ -1,7 +0,0 @@ -Enhancement: Cancel current command if cache becomes unusable - -If the cache directory was removed or ran out of space while restic was -running, this caused further caching attempts to fail and drastically slow down -the command execution. Now, the currently running command is canceled instead. - -https://github.com/restic/restic/pull/4166 diff --git a/changelog/unreleased/pull-4201 b/changelog/unreleased/pull-4201 index 500bbdbb1..8e4135f39 100644 --- a/changelog/unreleased/pull-4201 +++ b/changelog/unreleased/pull-4201 @@ -2,8 +2,6 @@ Change: Require Go 1.20 for Solaris builds Building restic on Solaris now requires Go 1.20, as the library used to access Azure uses the mmap syscall, which is only available on Solaris starting from -Go 1.20. - -All other platforms continue to build with Go 1.18. +Go 1.20. All other platforms however continue to build with Go 1.18. https://github.com/restic/restic/pull/4201 diff --git a/changelog/unreleased/pull-4220 b/changelog/unreleased/pull-4220 index 787b6ba2d..e832adf49 100644 --- a/changelog/unreleased/pull-4220 +++ b/changelog/unreleased/pull-4220 @@ -1,5 +1,6 @@ -Enhancement: Add jq to container image +Enhancement: Add `jq` binary to Docker image -The Docker container image now contains jq which can be useful when restic outputs json data. +The Docker image now contains `jq`, which can be useful to process JSON data +output by restic. https://github.com/restic/restic/pull/4220 diff --git a/changelog/unreleased/pull-4226 b/changelog/unreleased/pull-4226 index 69c848735..1e04b35fb 100644 --- a/changelog/unreleased/pull-4226 +++ b/changelog/unreleased/pull-4226 @@ -1,7 +1,7 @@ -Enhancement: Allow specifying the region of new buckets in the gcs backend +Enhancement: Allow specifying region of new buckets in the `gs` backend -Buckets used by the Google Cloud Storage backend would always get created in -the "us" region. It is now possible to specify the region, where a bucket -should get created. +Previously, buckets used by the Google Cloud Storage backend would always get +created in the "us" region. It is now possible to specify the region where a +bucket should be created by using the `-o gs.region=us` option. https://github.com/restic/restic/pull/4226 diff --git a/changelog/unreleased/pull-4304 b/changelog/unreleased/pull-4304 deleted file mode 100644 index ca3c7a8db..000000000 --- a/changelog/unreleased/pull-4304 +++ /dev/null @@ -1,5 +0,0 @@ -Bugfix: Avoid lock refresh issues with slow network connections - -On network connections with a low upload speed, restic could often fail backups and other operations with `Fatal: failed to refresh lock in time`. We've reworked the lock refresh to avoid this error. - -https://github.com/restic/restic/pull/4304 diff --git a/changelog/unreleased/pull-4318 b/changelog/unreleased/pull-4318 index 198b972d3..f13525f96 100644 --- a/changelog/unreleased/pull-4318 +++ b/changelog/unreleased/pull-4318 @@ -2,7 +2,7 @@ Bugfix: Correctly clean up status bar output of the `backup` command Due to a regression in restic 0.15.2, the status bar of the `backup` command could leave some output behind. This happened if filenames were printed that -are wider than the current terminal width. This has been fixed. +are wider than the current terminal width. This has now been fixed. https://github.com/restic/restic/issues/4319 https://github.com/restic/restic/pull/4318 diff --git a/changelog/unreleased/pull-4400 b/changelog/unreleased/pull-4400 index a9aaf6284..bce09842f 100644 --- a/changelog/unreleased/pull-4400 +++ b/changelog/unreleased/pull-4400 @@ -1,8 +1,8 @@ -Bugfix: Ignore missing folders in REST backend +Bugfix: Ignore missing folders in `rest` backend If a repository accessed via the REST backend was missing folders, then restic would fail with an error while trying to list the data in the repository. This -has been fixed. +has been now fixed. https://github.com/restic/restic/pull/4400 https://github.com/restic/rest-server/issues/235