Merge pull request #3889 from restic/prepare-0-14

Polish changelog entries
This commit is contained in:
MichaelEischer 2022-08-24 21:28:44 +02:00 committed by GitHub
commit bd7bca2b51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 152 additions and 141 deletions

View file

@ -1,9 +1,9 @@
Enhancement: Support pruning even after running out of disk space
Enhancement: Support pruning even when the disk is full
When running out of disk space it was no longer possible to add or remove
data from a repository. To help with recovering from such a deadlock, the
prune command now supports an `--unsafe-recover-no-free-space` option to
recover from such situations. Make sure to read the documentation first!
recover from these situations. Make sure to read the documentation first!
https://github.com/restic/restic/issues/1153
https://github.com/restic/restic/pull/3481

View file

@ -2,7 +2,7 @@ Change: Support debug log creation in release builds
Creating a debug log was only possible in debug builds which required users to
manually build restic. We changed the release builds to allow creating debug
logs by setting the environment variable `DEBUG_LOG=logname.log`.
logs by simply setting the environment variable `DEBUG_LOG=logname.log`.
https://github.com/restic/restic/issues/1842
https://github.com/restic/restic/pull/3826

View file

@ -1,27 +1,25 @@
Enhancement: Add comppression support
Enhancement: Add compression support
We have added compression support to the restic repository format. To create a
We've added compression support to the restic repository format. To create a
repository using the new format run `init --repository-version 2`. Please note
that the repository cannot be read by restic versions prior to 0.14.0.
You can configure if data is compressed with the option `--compression`. It can
be set to `auto` (the default, which will compress very fast), `max` (which
You can configure whether data is compressed with the option `--compression`. It
can be set to `auto` (the default, which will compress very fast), `max` (which
will trade backup speed and CPU usage for better compression), or `off` (which
disables compression). Each setting is only applied for the single run of restic.
The option can also be set via the environment variable `RESTIC_COMPRESSION`.
The new format version has not received much testing yet. Do not rely on it as
your only backup copy! Please run `check` in regular intervals to detect any
problems.
disables compression). Each setting is only applied for the current run of restic
and does *not* apply to future runs. The option can also be set via the
environment variable `RESTIC_COMPRESSION`.
To upgrade in place run `migrate upgrade_repo_v2` followed by `prune`. See the
documentation for more details. The migration checks the repository integrity
and upgrades the repository format but will not change any data. Afterwards,
and upgrades the repository format, but will not change any data. Afterwards,
prune will rewrite the metadata to make use of compression.
As an alternative you can use the `copy` command to migrate snapshots: first create a new
repository using `init --repository-version 2 --copy-chunker-params --repo2 path/to/old/repo`.
Then use the `copy` command to copy all snapshots to the new repository.
As an alternative you can use the `copy` command to migrate snapshots; First
create a new repository using
`init --repository-version 2 --copy-chunker-params --repo2 path/to/old/repo`,
and then use the `copy` command to copy all snapshots to the new repository.
https://github.com/restic/restic/issues/21
https://github.com/restic/restic/issues/3779

View file

@ -1,11 +1,11 @@
Enhancement: Adapt IO concurrency based on backend connections
Enhancement: Adaptive IO concurrency based on backend connections
Many commands used hard-coded limits for the number of concurrent operations.
This prevented speed improvements by increasing the number of connections used
by a backend.
These limits have been replaced by using the configured number of backend
connections instead. It can be controlled using the
These limits have now been replaced by using the configured number of backend
connections instead, which can be controlled using the
`-o <backend-name>.connections=5` option. Commands will then automatically
scale their parallelism accordingly.

View file

@ -1,8 +1,8 @@
Bugfix: Support self-update on Windows
Bugfix: Support `self-update` on Windows
Restic self-update would fail in situations where the operating system
Restic `self-update` would fail in situations where the operating system
locks running binaries, including Windows. The new behavior works around
this by renaming the running file and swapping the updated file in place.
https://github.com/restic/restic/issues/2248
https://github.com/restic/restic/pull/3675
https://github.com/restic/restic/pull/3675

View file

@ -1,6 +1,6 @@
Enhancement: Allow pack size customization
Restic now uses a target pack size of 16 MiB by default. It can be customized
Restic now uses a target pack size of 16 MiB by default. This can be customized
using the `--pack-size size` option. Supported pack sizes range between 4 and
128 MiB.

View file

@ -8,7 +8,7 @@ We added support for Azure SAS tokens which are a more fine-grained
and time-limited manner of granting access. Set the `AZURE_ACCOUNT_NAME`
and `AZURE_ACCOUNT_SAS` environment variables to use a SAS token for
authentication. Note that if `AZURE_ACCOUNT_KEY` is set, it will take
preference.
precedence.
https://github.com/restic/restic/issues/2295
https://github.com/restic/restic/pull/3661

View file

@ -2,8 +2,8 @@ Enhancement: Improve backup speed with many small files
We have restructured the backup pipeline to continue reading files while all
upload connections are busy. This allows the backup to already prepare the next
data file such that the upload can continue right once the last one has
completed. This can especially improve the backup performance for high latency
data file such that the upload can continue as soon as a connection becomes
available. This can especially improve the backup performance for high latency
backends.
The upload concurrency is now controlled using the `-o <backend-name>.connections=5`

View file

@ -1,10 +1,10 @@
Enhancement: Make snapshot directory structure of mount command custimizable
Enhancement: Make snapshot directory structure of `mount` command customizable
We've added the possibility to customize the snapshot directory structure of
the mount command using templates passed to `--snapshot-template`. The
formatting of the time for a snapshot is now controlled using `--time-template`
the `mount` command using templates passed to the `--snapshot-template` option.
The formatting of snapshots' timestamps is now controlled using `--time-template`
and supports subdirectories to for example group snapshots by year. Please
refer to the help output of the `mount` command for further details.
see `restic help mount` for further details.
Characters in tag names which are not allowed in a filename are replaced by
underscores `_`. For example a tag `foo/bar` will result in a directory name

View file

@ -5,8 +5,8 @@ blobs. This effectively removed all duplicates during prune. However, as a
consequence all these data files were repacked even if the unused repository
space threshold could be reached with less work.
This is now changed and `prune` works nice and fast also if there are lots
of duplicates.
This is now changed and `prune` works nice and fast even when there are lots
of duplicate blobs.
https://github.com/restic/restic/issues/3114
https://github.com/restic/restic/pull/3290

View file

@ -1,12 +1,13 @@
Change: Deprecate `check --check-unused` and add further checks
Since restic 0.12.0, it is expected to still have unused blobs after running
`prune`. This made the `check --check-unused` rather useless and tended to
confuse users. The options has been deprecated and is now ignored.
`prune`. This made the `--check-unused` option of the `check` command rather
useless and tended to confuse users. This option has been deprecated and is
now ignored.
`check` now also warns if a repository is using either the legacy S3 layout or
mixed pack files with both tree and data blobs. The latter is known to cause
performance problems.
The `check` command now also warns if a repository is using either the legacy
S3 layout or mixed pack files with both tree and data blobs. The latter is
known to cause performance problems.
https://github.com/restic/restic/issues/3295
https://github.com/restic/restic/pull/3730

View file

@ -1,13 +1,13 @@
Bugfix: List snapshots in backend at most once to resolve snapshot ids
Bugfix: List snapshots in backend at most once to resolve snapshot IDs
Many commands support specifying a list of snapshot ids which are then used to
determine the snapshot accessed by the command. To resolve snapshot ids or
"latest" and check that these exist, restic listed all snapshots stored in the
repository. Depending on the backend this can be a slow and/or expensive
operation.
Many commands support specifying a list of snapshot IDs which are then used to
determine the snapshots to be processed by the command. To resolve snapshot IDs
or `latest`, and check that these exist, restic previously listed all snapshots
stored in the repository. Depending on the backend this could be a slow and/or
expensive operation.
Restic now lists the snapshots only once and remembers the result to resolve
all further snapshot ids.
Restic now lists the snapshots only once and remembers the result in order to
resolve all further snapshot IDs swiftly.
https://github.com/restic/restic/issues/3428
https://github.com/restic/restic/pull/3570

View file

@ -1,12 +1,12 @@
Bugfix: Fix rare 'not found in repository' error for copy command
Bugfix: Fix rare 'not found in repository' error for `copy` command
In rare cases copy (and other commands) could report that LoadTree(...)
returned a `id [...] not found in repository` error. This could be caused by a
backup or copy command running concurrently. The error is only temporary,
running the failed restic command a second time as a workaround solves the
In rare cases `copy` (and other commands) would report that `LoadTree(...)`
returned an `id [...] not found in repository` error. This could be caused by
a backup or copy command running concurrently. The error was only temporary;
running the failed restic command a second time as a workaround did resolve the
error.
This issue has been fixed by correcting the order in which restic reads data
This issue has now been fixed by correcting the order in which restic reads data
from the repository. It is now guaranteed that restic only loads snapshots for
which all necessary data is already available.

View file

@ -1,9 +1,9 @@
Enhancement: Improve handling of temporary files on Windows
In some cases restic failed to delete temporary files causing the current
command to fail. This has been fixed by ensuring that Windows automatically
deletes the file. In addition, temporary files are only written to disk if
necessary to reduce disk writes.
In some cases restic failed to delete temporary files, causing the current
command to fail. This has now been fixed by ensuring that Windows automatically
deletes the file. In addition, temporary files are only written to disk when
necessary, reducing disk writes.
https://github.com/restic/restic/issues/3465
https://github.com/restic/restic/issues/1551

View file

@ -1,7 +1,7 @@
Bugfix: Fix the diff command
Bugfix: The `diff` command incorrectly listed some files as added
There was a bug in the `diff` command, it would always show files in a removed
directory as added. We've fixed that.
There was a bug in the `diff` command, causing it to always show files in a
removed directory as added. This has now been fixed.
https://github.com/restic/restic/issues/3685
https://github.com/restic/restic/pull/3686

View file

@ -1,11 +1,12 @@
Bugfix: Fix rclone (shimmed by Scoop) and sftp stopped working on Windows
Bugfix: Fix rclone (shimmed by Scoop) and sftp not working on Windows
In #3602 a fix was introduced to fix the problem that rclone prematurely exits
when Ctrl+C is pressed on Windows. The solution was to create the subprocess
with its console detached from the restic console. However, such solution
fails when using rclone install by scoop or using sftp with a passphrase-
protected private key. We've fixed that by using a different approach to prevent
Ctrl-C from passing down too early.
In #3602 a fix was introduced to address the problem of `rclone` prematurely
exiting when Ctrl+C is pressed on Windows. The solution was to create the
subprocess with its console detached from the restic console.
However, this solution failed when using `rclone` installed by Scoop or using
`sftp` with a passphrase-protected private key. We've now fixed this by using
a different approach to prevent Ctrl-C from passing down too early.
https://github.com/restic/restic/issues/3681
https://github.com/restic/restic/issues/3692

View file

@ -1,9 +1,11 @@
Enhancement: Validate exclude patterns before backing up
Exclude patterns provided via `--exclude`, `--iexclude`, `--exclude-file` or `--iexclude-file`
previously weren't validated. As a consequence, invalid patterns resulted in all files being backed up.
restic now validates all patterns before running the backup and aborts with a fatal error
if an invalid pattern is detected.
Exclude patterns provided via `--exclude`, `--iexclude`, `--exclude-file` or
`--iexclude-file` previously weren't validated. As a consequence, invalid
patterns resulted in files that were meant to be excluded being backed up.
Restic now validates all patterns before running the backup and aborts with
a fatal error if an invalid pattern is detected.
https://github.com/restic/restic/issues/3709
https://github.com/restic/restic/pull/3734

View file

@ -1,12 +1,12 @@
Bugfix: Fix directory sync errors related repositories accessed via SMB
Bugfix: Directory sync errors for repositories accessed via SMB
On Linux and macOS accessing a repository via a SMB/CIFS mount resulted in
restic failing to save the lock file:
On Linux and macOS, accessing a repository via a SMB/CIFS mount resulted in
restic failing to save the lock file, yielding the following errors:
Save(<lock/071fe833f0>) returned error, retrying after 552.330144ms: sync /repo/locks: no such file or directory
Save(<lock/bf789d7343>) returned error, retrying after 552.330144ms: sync /repo/locks: invalid argument
This has been fixed by ignoring these error codes.
This has now been fixed by ignoring the relevant error codes.
https://github.com/restic/restic/issues/3720
https://github.com/restic/restic/issues/3751

View file

@ -1,8 +1,8 @@
Bugfix: `stats` fix restore size calculation for multiple snapshots
Bugfix: The `stats` command miscalculated restore size for multiple snapshots
Since restic 0.10.0 the restore size calculated by the `stats` command for
multiple snapshots was too low. The hardlink detection was accidentally applied
across multiple snapshots and thus ignored many files. This has been fixed.
across multiple snapshots and thus ignored many files. This has now been fixed.
https://github.com/restic/restic/issues/3736
https://github.com/restic/restic/pull/3740

View file

@ -1,8 +1,8 @@
Enhancement: SFTP backend initialization is faster on slow links
Enhancement: Improve SFTP repository initialization over slow links
Restic init on an SFTP backend now sends multiple mkdir commands to the
backend concurrently, to reduce the wait when creating a repository
over a very slow link.
The `init` command, when used on an SFTP backend, now sends multiple `mkdir`
commands to the backend concurrently. This reduces the waiting times when
creating a repository over a very slow connection.
https://github.com/restic/restic/issues/3837
https://github.com/restic/restic/pull/3840

View file

@ -1,21 +1,21 @@
Enhancement: Use config file permissions to control file group access
Previously files in a local/sftp restic repository would always end up with
very restrictive access permissions allowing access only to the owner. This
Previously files in a local/SFTP repository would always end up with very
restrictive access permissions, allowing access only to the owner. This
prevented a number of valid use-cases involving groups and ACLs.
Now we use the config file permissions to decide whether group access
should be given to newly created repository files or not. We arrange for
repository files to be created group readable exactly when the repository
config file is group readable.
We now use the permissions of the config file in the repository to decide
whether group access should be given to newly created repository files or
not. We arrange for repository files to be created group readable exactly
when the repository config file is group readable.
To opt-in to group readable repositories a simple `chmod -R g+r` or
equivalent can be used. For repositories that should be writable by group
members a tad more setup is required, see the docs.
To opt-in to group readable repositories, a simple `chmod -R g+r` or
equivalent on the config file can be used. For repositories that should
be writable by group members a tad more setup is required, see the docs.
Posix ACLs can also be used now that the group permissions being forced to
zero no longer masks the effect of ACL entries.
https://github.com/restic/restic/issues/2351
https://github.com/restic/restic/pull/3419
https://forum.restic.net/t/change-permissions-on-repository-files/1391
https://forum.restic.net/t/1391

View file

@ -1,8 +1,9 @@
Enhancement: Allow limiting IO concurrency for local and sftp backend
Enhancement: Allow limiting IO concurrency for local and SFTP backend
restic did not support limiting the IO concurrency / number of connections for
accessing repositories stored using the local or sftp backend. The number of
connections is now limited as for other backends. It can be configured via the
the `-o local.connections=2` and `-o sftp.connections=5` options.
Restic did not support limiting the IO concurrency / number of connections for
accessing repositories stored using the local or SFTP backends. The number of
connections is now limited as for other backends, and can be configured via the
the `-o local.connections=2` and `-o sftp.connections=5` options. This ensures
that restic does not overwhelm the backend with concurrent IO operations.
https://github.com/restic/restic/pull/3475

View file

@ -1,10 +1,12 @@
Enhancement: Stream data in check and prune commands
Enhancement: Stream data in `check` and `prune` commands
`check --read-data` and `prune` downloaded data files into temporary files
which can end up being written to disk. This could cause a large amount of data
being written to disk. The pack files are now streamed which no longer needs
temporary files. Please note that uploads during `backup` and `prune` still
require temporary files.
The commands `check --read-data` and `prune` previously downloaded data files
into temporary files which could end up being written to disk. This could cause
a large amount of data being written to disk.
The pack files are now instead streamed, which removes the need for temporary
files. Please note that *uploads* during `backup` and `prune` still require
temporary files.
https://github.com/restic/restic/pull/3484
https://github.com/restic/restic/issues/3710

View file

@ -1,10 +1,10 @@
Enhancement: Improve speed of copy command
Enhancement: Improve speed of `copy` command
The copy command could require a long time to copy snapshots for non-local
The `copy` command could require a long time to copy snapshots for non-local
backends. This has been improved to provide a throughput comparable to the
restore command.
`restore` command.
In addition, the command now displays a progress bar.
Additionally, `copy` now displays a progress bar.
https://github.com/restic/restic/issues/2923
https://github.com/restic/restic/pull/3513

View file

@ -1,7 +1,8 @@
Change: Update dependencies and require Go 1.15 or newer
We've updated most dependencies. Since some libraries require newer language
features we're dropping support for Go 1.14 and restic now requires at least Go
1.15 to build.
features we're dropping support for Go 1.14, which means that restic now
requires at least Go 1.15 to build.
https://github.com/restic/restic/issues/3680
https://github.com/restic/restic/issues/3883

View file

@ -1,7 +1,7 @@
Bugfix: Print "wrong password" error on stderr
Bugfix: Print "wrong password" to stderr instead of stdout
If a wrong password was entered, the error message was printed on stdout and
not on stderr as intended. This has been fixed.
If an invalid password was entered, the error message was printed on stdout and
not on stderr as intended. This has now been fixed.
https://github.com/restic/restic/pull/3716
https://forum.restic.net/t/should-error-messages-end-up-in-output-file-when-redirecting-dump-to-stdout/4965
https://forum.restic.net/t/4965

View file

@ -1,6 +1,8 @@
Enhancement: Include full IDs in `check` warnings
Enhancement: Display full IDs in `check` warnings
To repair or inspect a damaged repository, it is often necessary to use the full IDs of objects stored in the repository.
The output of check now includes full IDs instead of their shortened variant.
When running commands to inspect or repair a damaged repository, it is often
necessary to supply the full IDs of objects stored in the repository.
The output of `check` now includes full IDs instead of their shortened variant.
https://github.com/restic/restic/pull/3729

View file

@ -1,12 +1,12 @@
Change: Replace `--repo2` option used by init/copy with `--from-repo`
Change: Replace `--repo2` option used by `init`/`copy` with `--from-repo`
The `init` and the `copy` command can read data from another repository.
However, confusingly `--repo2` referred to the repository from which the
The `init` and `copy` commands can read data from another repository.
However, confusingly `--repo2` referred to the repository *from* which the
`init` command copies parameters, but for the `copy` command `--repo2`
referred to the copy destination.
referred to the copy *destination*.
We have introduced a new option `--from-repo` which always refers to the
source repository for both commands. The old parameters names have been
We've introduced a new option, `--from-repo`, which always refers to the
source repository for both commands. The old parameter names have been
deprecated but still work. To create a new repository and copy all snapshots
to it, the commands are now as follows:
@ -16,4 +16,4 @@ restic -r /srv/restic-repo-copy copy --from-repo /srv/restic-repo
```
https://github.com/restic/restic/pull/3742
https://forum.restic.net/t/restic-repository2-confusion/5017
https://forum.restic.net/t/5017

View file

@ -1,13 +1,14 @@
Bugfix: Correctly rebuild index for legacy repositories
After running `rebuild-index` on a legacy repository containing mixed pack
files, that is pack files with store both metadata and file data, `check`
printed warnings like `pack 12345678 contained in several indexes: ...`. The
warning is not critical. It has been fixed by properly handling mixed pack
files while rebuilding the index.
files (that is, pack files which store both metadata and file data), `check`
printed warnings like `pack 12345678 contained in several indexes: ...`.
This warning was not critical, but has now nonetheless been fixed by properly
handling mixed pack files while rebuilding the index.
Running `prune` for such legacy repositories will also fix the warning by
reorganizing the pack files which cause the warning.
reorganizing the pack files which caused it.
https://github.com/restic/restic/pull/3772
https://forum.restic.net/t/help-in-recovery-a-corrupted-repository/5044/13
https://github.com/restic/restic/pull/3884
https://forum.restic.net/t/5044/13

View file

@ -1,7 +1,7 @@
Enhancement: Optimize memory usage for directories with many files
Backing up a directory with hundred thousands or more files causes restic to
require large amounts of memory. We have optimized `backup` command such that
it requires up to 30% less memory.
Backing up a directory with hundreds of thousands or more files caused restic
to require large amounts of memory. We've now optimized the `backup` command
such that it requires up to 30% less memory.
https://github.com/restic/restic/pull/3773

View file

@ -1,10 +1,11 @@
Bugfix: Limit number of key files tested while opening a repository
Previously, restic tested the password against every key in the repository, when
there are more and more keys in the repository, opening the repository becomes
slower and slower.
Previously, restic tested the password against every key in the repository
when opening a repository. The more keys there were in the repository, the
slower this operation became.
Now restic tests password against up to 20 key file in the repository. Alternatively,
you can use `--key-hint=<Key ID>` to specify the key file to be used.
Restic now tests the password against up to 20 key files in the repository.
Alternatively, you can use the `--key-hint=<key ID>` option to specify a
specific key file to use instead.
https://github.com/restic/restic/pull/3776

View file

@ -1,10 +1,11 @@
Enhancement: Validate include/exclude patterns before restoring
Patterns provided to `restic restore` via `--exclude`, `--iexclude`,
`--include` and `--iinclude` weren't validated before running the restore.
Invalid patterns would result in error messages being printed repeatedly
and possibly unwanted files being restored.
restic now validates all patterns before running the restore and aborts with
a fatal error if an invalid pattern is detected.
Patterns provided to `restore` via `--exclude`, `--iexclude`, `--include`
and `--iinclude` weren't validated before running the restore. Invalid
patterns would result in error messages being printed repeatedly, and
possibly unwanted files being restored.
Restic now validates all patterns before running the restore, and aborts
with a fatal error if an invalid pattern is detected.
https://github.com/restic/restic/pull/3819