diff --git a/changelog/unreleased/issue-14 b/changelog/unreleased/issue-14 index e97541f4d..b1f9e225b 100644 --- a/changelog/unreleased/issue-14 +++ b/changelog/unreleased/issue-14 @@ -1,7 +1,7 @@ -Enhancement: Implement rewrite command +Enhancement: Implement `rewrite` command -We've added a new command which allows to rewrite existing snapshots to remove -unwanted files. +Restic now has a `rewrite` command which allows to rewrite existing snapshots +to remove unwanted files. https://github.com/restic/restic/issues/14 https://github.com/restic/restic/pull/2731 diff --git a/changelog/unreleased/issue-1734 b/changelog/unreleased/issue-1734 index e1d65aa6b..8d4a16c13 100644 --- a/changelog/unreleased/issue-1734 +++ b/changelog/unreleased/issue-1734 @@ -1,16 +1,15 @@ -Enhancement: "Everything is ok" message after retrying +Enhancement: Inform about successful retries after errors -When a recoverable error is encountered, restic displays a warning message -saying it's retrying, like this one: +When a recoverable error is encountered, restic shows a warning message saying +that it's retrying, e.g.: -Save() returned error, retrying after 357.131936ms: CreateBlockBlobFromReader: Put https://example.blob.core.windows.net/restic/data/95/956b9ced99...aac: write tcp 192.168.11.18:51620->1.2.3.4:443: write: connection reset by peer +`Save() returned error, retrying after 357.131936ms: ...` -This message can be a little confusing because it seems like there was an -error, but we're not sure if it was actually fixed by retrying. +This message can be confusing in that it never clearly states whether the retry +is successful or not. This has now been fixed such that restic follows up with +a message confirming a successful retry, e.g.: -restic is now displaying a confirmation that the action was successful after retrying: - -Save() operation successful after 1 retries +`Save() operation successful after 1 retries` https://github.com/restic/restic/issues/1734 https://github.com/restic/restic/pull/2661 diff --git a/changelog/unreleased/issue-1866 b/changelog/unreleased/issue-1866 index 4bf4c523b..1ff5b9ad5 100644 --- a/changelog/unreleased/issue-1866 +++ b/changelog/unreleased/issue-1866 @@ -1,11 +1,11 @@ Enhancement: Improve handling of directories with duplicate entries -If for some reason a directory contains a duplicate entry, this caused the -backup command to fail with a `node "path/to/file" already present` or `nodes +If for some reason a directory contains a duplicate entry, the `backup` command +would previously fail with a `node "path/to/file" already present` or `nodes are not ordered got "path/to/file", last "path/to/file"` error. -The error handling has been changed to only report a warning in this case. Make -sure to check that the filesystem in question is not damaged! +The error handling has been improved to only report a warning in this case. Make +sure to check that the filesystem in question is not damaged if you see this! https://github.com/restic/restic/issues/1866 https://github.com/restic/restic/issues/3937 diff --git a/changelog/unreleased/issue-2015 b/changelog/unreleased/issue-2015 index e611bcbf8..cb40f1868 100644 --- a/changelog/unreleased/issue-2015 +++ b/changelog/unreleased/issue-2015 @@ -1,10 +1,10 @@ -Bugfix: Mount command should return exit code 0 after receiving Ctrl-C +Bugfix: Make `mount` return exit code 0 after receiving Ctrl-C / SIGINT -To stop the mount command, a user has to press Ctrl-C or send a SIGINT to -restic. This caused restic to exit with a non-zero exit code. +To stop the `mount` command, a user has to press Ctrl-C or send a SIGINT +signal to restic. This used to cause restic to exit with a non-zero exit code. -We have changed the exit code to zero as this is the expected way to stop the -mount command. +The exit code has now been changed to zero as the above is the expected way +to stop the `mount` command and should therefore be considered successful. https://github.com/restic/restic/issues/2015 https://github.com/restic/restic/pull/3894 diff --git a/changelog/unreleased/issue-2134 b/changelog/unreleased/issue-2134 index 1886967f8..527b9dc2e 100644 --- a/changelog/unreleased/issue-2134 +++ b/changelog/unreleased/issue-2134 @@ -3,13 +3,13 @@ Enhancement: Support B2 API keys restricted to hiding but not deleting files When the B2 backend does not have the necessary permissions to permanently delete files, it now automatically falls back to hiding files. This allows using restic with an application key which is not allowed to delete files. -This prevents an attacker to delete backups with the API key used by restic. +This can prevent an attacker from deleting backups with such an API key. -To use this feature create an application key without the deleteFiles +To use this feature create an application key without the `deleteFiles` capability. It is recommended to restrict the key to just one bucket. -For example using the b2 command line tool: +For example using the `b2` command line tool: - b2 create-key --bucket listBuckets,readFiles,writeFiles,listFiles +`b2 create-key --bucket listBuckets,readFiles,writeFiles,listFiles` Alternatively, you can use the S3 backend to access B2, as described in the documentation. In this mode, files are also only hidden instead diff --git a/changelog/unreleased/issue-2152 b/changelog/unreleased/issue-2152 index 25492e5ed..7eafe2e14 100644 --- a/changelog/unreleased/issue-2152 +++ b/changelog/unreleased/issue-2152 @@ -1,11 +1,11 @@ -Enhancement: only open connection once for `init` command using sftp backend +Enhancement: Make `init` open only one connection for the SFTP backend -The `init` command using the sftp backend used to connect twice to the -repository. This can be inconvenient if the user must enter a password or cause -`init` to fail if the server does not correctly close the first sftp +The `init` command using the SFTP backend used to connect twice to the +repository. This could be inconvenient if the user must enter a password, +or cause `init` to fail if the server does not correctly close the first SFTP connection. -This has been fixed by reusing the initial sftp connection. +This has now been fixed by reusing the first/initial SFTP connection opened. https://github.com/restic/restic/issues/2152 https://github.com/restic/restic/pull/3882 diff --git a/changelog/unreleased/issue-2533 b/changelog/unreleased/issue-2533 index 710241bcc..e53ab1179 100644 --- a/changelog/unreleased/issue-2533 +++ b/changelog/unreleased/issue-2533 @@ -1,12 +1,12 @@ -Enhancement: Redownload cached data if invalid +Enhancement: Handle cache corruption on disk and in downloads In rare situations, like for example after a system crash, the data stored -in the cache might be corrupted. This could cause restic to fail and -required manually deleting the cache. +in the cache might be corrupted. This could cause restic to fail and required +manually deleting the cache. Restic now automatically removes broken data from the cache, allowing it to recover from such a situation without user intervention. In addition, -restic retries downloads which return corrupt data in order to handle +restic retries downloads which return corrupt data in order to also handle temporary download problems. https://github.com/restic/restic/issues/2533 diff --git a/changelog/unreleased/issue-2591 b/changelog/unreleased/issue-2591 index 04ca6f67a..5d74bd4dc 100644 --- a/changelog/unreleased/issue-2591 +++ b/changelog/unreleased/issue-2591 @@ -1,22 +1,17 @@ -Bugfix: Don't read password from stdin for backup --stdin +Bugfix: Don't read password from stdin for `backup --stdin` -Restic backup previously tried to read first the password, then the data -to be backed up from standard input. This meant it would often confuse part -of the data for the password. +The `backup` command when used with `--stdin` previously tried to read first +the password, then the data to be backed up from standard input. This meant +it would often confuse part of the data for the password. -From now on, restic backup --stdin will exit with the message +From now on, it will instead exit with the message `Fatal: cannot read both +password and data from stdin` unless the password is passed in some other +way (such as `--restic-password-file`, `RESTIC_PASSWORD`, etc). - Fatal: cannot read both password and data from stdin - -unless the password is passed in some other way (--restic-password-file, -RESTIC_PASSWORD, etc.). To enter the password interactively, a password -command has to be used. For example, on Linux, - - mysqldump somedatabase | - restic backup --stdin \ - --password-command='sh -c "systemd-ask-password < /dev/tty"' - -securely reads the password from the terminal. +To enter the password interactively a password command has to be used. For +example on Linux, `mysqldump somedatabase | restic backup --stdin +--password-command='sh -c "systemd-ask-password < /dev/tty"'` securely reads +the password from the terminal. https://github.com/restic/restic/issues/2591 https://github.com/restic/restic/pull/4011 diff --git a/changelog/unreleased/issue-2699 b/changelog/unreleased/issue-2699 index b933c8a52..1d35259ee 100644 --- a/changelog/unreleased/issue-2699 +++ b/changelog/unreleased/issue-2699 @@ -1,8 +1,8 @@ -Bugfix: Restore symbolic links on windows +Enhancement: Support restoring symbolic links on Windows -We've added support to restore symbolic links on windows. -Because of windows specific restrictions this is only possible when running -restic having SeCreateSymbolicLinkPrivilege privilege or when running as admin. +The `restore` command now supports restoring symbolic links on Windows. Because +of Windows specific restrictions this is only possible when running restic with +the `SeCreateSymbolicLinkPrivilege` privilege or as an administrator. https://github.com/restic/restic/issues/1078 https://github.com/restic/restic/issues/2699 diff --git a/changelog/unreleased/issue-2715 b/changelog/unreleased/issue-2715 index 2e4d67c97..be086384e 100644 --- a/changelog/unreleased/issue-2715 +++ b/changelog/unreleased/issue-2715 @@ -1,17 +1,20 @@ Enhancement: Stricter repository lock handling -Restic commands kept running even if they failed to refresh their locks in -time. This can be a problem if a concurrent call to `unlock` and `prune` -removes data from the repository. Not refreshing a lock in time can for example -be caused by a client switching to standby while running a backup. +Previously, restic commands kept running even if they failed to refresh their +locks in time. This could be a problem e.g. in case the client system running +a backup entered the standby power mode while the backup was still in progress +(which would prevent the client from refreshing its lock), and after a short +delay another host successfully runs `unlock` and `prune` on the repository, +which would remove all data added by the in-progress backup. If the backup +client later continues its backup, even though its lock had expired in the +meantime, this would lead to an incomplete snapshot. -Lock handling is now much stricter. Commands requiring a lock are canceled if -the lock is not refreshed successfully in time. - -In addition, if a lock file is not readable restic will not allow starting a -command. It may be necessary to remove invalid lock file manually or using -`unlock --remove-all`. Please make sure that no other restic processes are -running concurrently. +To address this, lock handling is now much stricter. Commands requiring a lock +are canceled if the lock is not refreshed successfully in time. In addition, +if a lock file is not readable restic will not allow starting a command. It may +be necessary to remove invalid lock files manually or use `unlock --remove-all`. +Please make sure that no other restic processes are running concurrently before +doing this, however. https://github.com/restic/restic/issues/2715 https://github.com/restic/restic/pull/3569 diff --git a/changelog/unreleased/issue-2724 b/changelog/unreleased/issue-2724 index f8b605837..ba91ccb08 100644 --- a/changelog/unreleased/issue-2724 +++ b/changelog/unreleased/issue-2724 @@ -1,9 +1,9 @@ -Change: Include full snapshot ID in JSON output of the bacukp command +Change: Include full snapshot ID in JSON output of `backup` -We have changed the JSON output of the backup command to include the full snapshot ID instead of just a shortened version. -The latter can be ambiguous in rare cases. - -To derive the short ID, truncate the full ID down to 8 characters. +We have changed the JSON output of the backup command to include the full +snapshot ID instead of just a shortened version, as the latter can be ambiguous +in some rare cases. To derive the short ID, please truncate the full ID down to +eight characters. https://github.com/restic/restic/issues/2724 https://github.com/restic/restic/pull/3993 diff --git a/changelog/unreleased/issue-3029 b/changelog/unreleased/issue-3029 index f9eb638af..e66179bf2 100644 --- a/changelog/unreleased/issue-3029 +++ b/changelog/unreleased/issue-3029 @@ -1,7 +1,7 @@ Enhancement: Add support for `credential_process` to S3 backend -We have updated the library used for the S3 backend. This adds support for the -`credential_process` option in the aws credential configuration. +Restic now uses a newer library for the S3 backend, which adds support for the +`credential_process` option in the AWS credential configuration. https://github.com/restic/restic/issues/3029 https://github.com/restic/restic/issues/4034 diff --git a/changelog/unreleased/issue-3096 b/changelog/unreleased/issue-3096 index 548e54bbe..e16d68684 100644 --- a/changelog/unreleased/issue-3096 +++ b/changelog/unreleased/issue-3096 @@ -1,8 +1,8 @@ -Enhancement: Support mount command on macOS using macFUSE 4.x +Enhancement: Make `mount` command support macOS using macFUSE 4.x -We have switched to a different version of the fuse library used to mount -snapshots. This adds support for macFUSE 4.x which is necessary for recent -macOS versions. +Restic now uses a different FUSE library for mounting snapshots and making them +available as a FUSE filesystem using the `mount` command. This adds support for +macFUSE 4.x which can be used to make this work on recent macOS versions. https://github.com/restic/restic/issues/3096 https://github.com/restic/restic/pull/4024 diff --git a/changelog/unreleased/issue-3124 b/changelog/unreleased/issue-3124 index 25d754eed..5b7751071 100644 --- a/changelog/unreleased/issue-3124 +++ b/changelog/unreleased/issue-3124 @@ -1,7 +1,7 @@ -Enhancement: Support json output for the `init` command +Enhancement: Support JSON output for the `init` command -The `init` command ignored the `--json` flag. It now outputs a JSON message if -the repository was created successfully. +The `init` command used to ignore the `--json` option, but now outputs a JSON +message if the repository was created successfully. https://github.com/restic/restic/issues/3124 https://github.com/restic/restic/pull/3132 diff --git a/changelog/unreleased/issue-3161 b/changelog/unreleased/issue-3161 index ec18b6639..4bb109339 100644 --- a/changelog/unreleased/issue-3161 +++ b/changelog/unreleased/issue-3161 @@ -1,13 +1,14 @@ -Bugfix: Reliably delete files on Backblaze B2 +Bugfix: Delete files on Backblaze B2 more reliably Restic used to only delete the latest version of files stored in B2. In most -cases this works well as there is only a single version. However, due to -retries while uploading it is possible for multiple file versions to be stored -at B2. This can lead to various problems if files still exist that should have -been deleted. +cases this worked well as there was only a single version of the file. However, +due to retries while uploading it is possible for multiple file versions to be +stored at B2. This could lead to various problems for files that should have +been deleted but still existed. -We have changed the implementation to delete all of them. This doubles the -number of Class B transactions necessary to delete files. +The implementation has now been changed to delete all versions of files, which +doubles the amount of Class B transactions necessary to delete files, but +assures that no file versions are left behind. https://github.com/restic/restic/issues/3161 https://github.com/restic/restic/pull/3885 diff --git a/changelog/unreleased/issue-3336 b/changelog/unreleased/issue-3336 index b22ab244f..e222ef052 100644 --- a/changelog/unreleased/issue-3336 +++ b/changelog/unreleased/issue-3336 @@ -1,11 +1,11 @@ -Bugfix: SFTP backend now checks for disk space +Bugfix: Make SFTP backend report no space left on device -A backup to an SFTP backend would spew repeated SSH_FX_FAILURE messages when -the remote disk is full. Restic now reports "sftp: no space left on device" +Backing up to an SFTP backend would spew repeated SSH_FX_FAILURE messages when +the remote disk was full. Restic now reports "sftp: no space left on device" and exits immediately when it detects this condition. -A fix for this issue was promised in restic 0.12.1, but the fix itself -contained a bug that prevented it from triggering. +A fix for this issue was implemented in restic 0.12.1, but unfortunately the +fix itself contained a bug that prevented it from taking effect. https://github.com/restic/restic/issues/3336 https://github.com/restic/restic/pull/3345 diff --git a/changelog/unreleased/issue-3567 b/changelog/unreleased/issue-3567 index 8b0bf5790..ae6bc53ed 100644 --- a/changelog/unreleased/issue-3567 +++ b/changelog/unreleased/issue-3567 @@ -1,10 +1,9 @@ Bugfix: Improve handling of interrupted syscalls in `mount` command -Accessing restic's fuse mount could result in "input / output" errors when -using programs in which syscalls can be interrupted. This is for example the -case for go programs. - -We have corrected the error handling for interrupted syscalls. +Accessing restic's FUSE mount could result in "input/output" errors when using +programs in which syscalls can be interrupted. This is for example the case for +Go programs. This has now been fixed by improved error handling of interrupted +syscalls. https://github.com/restic/restic/issues/3567 https://github.com/restic/restic/issues/3694 diff --git a/changelog/unreleased/issue-3897 b/changelog/unreleased/issue-3897 index 45596c326..42422db78 100644 --- a/changelog/unreleased/issue-3897 +++ b/changelog/unreleased/issue-3897 @@ -1,7 +1,7 @@ -Bugfix: Fix stuck `copy` command when setting backend connections to 1 +Bugfix: Fix stuck `copy` command when `-o .connections=1` -When calling the copy command using `copy -o .connections=1` this -caused the command to be stuck permanently. This has been fixed. +When running the `copy` command with `-o .connections=1` the +command would be infinitely stuck. This has now been fixed. https://github.com/restic/restic/issues/3897 https://github.com/restic/restic/pull/3898 diff --git a/changelog/unreleased/issue-3918 b/changelog/unreleased/issue-3918 index 2cc60bf0d..1f5604c83 100644 --- a/changelog/unreleased/issue-3918 +++ b/changelog/unreleased/issue-3918 @@ -1,12 +1,9 @@ Bugfix: Correct prune statistics for partially compressed repositories In a partially compressed repository, one data blob can exist both in an -uncompressed and a compressed version. This caused the prune statistics to -become inaccurate and for example report a too high value for the unused size: - -> unused size after prune: 16777215.991 TiB - -This has been fixed. +uncompressed and a compressed version. This caused the `prune` statistics to +become inaccurate and e.g. report a too high value for the unused size, such +as "unused size after prune: 16777215.991 TiB". This has now been fixed. https://github.com/restic/restic/issues/3918 https://github.com/restic/restic/pull/3980 diff --git a/changelog/unreleased/issue-3929 b/changelog/unreleased/issue-3929 index 85a7fed8b..128d85194 100644 --- a/changelog/unreleased/issue-3929 +++ b/changelog/unreleased/issue-3929 @@ -1,7 +1,11 @@ -Enhancement: Only display the message if there were locks to be removed +Change: Make `unlock` display message only when locks were actually removed -`restic unlock` now only shows `successfully removed locks` if there were locks to be removed. -In addition, it also reports the number of the removed lock files. +The `unlock` command used to print the "successfully removed locks" message +whenever it was run, regardless of lock files having being removed or not. + +This has now been changed such that it only prints the message if any lock +files were actually removed. In addition, it also reports the number of +removed lock files. https://github.com/restic/restic/issues/3929 https://github.com/restic/restic/pull/3935 diff --git a/changelog/unreleased/issue-3932 b/changelog/unreleased/issue-3932 index 6802a78ba..132684009 100644 --- a/changelog/unreleased/issue-3932 +++ b/changelog/unreleased/issue-3932 @@ -1,8 +1,8 @@ Enhancement: Improve handling of ErrDot errors in rclone and sftp backends Since Go 1.19, restic can no longer implicitly run relative executables which -are found in the current directory (e.g. `rclone` if it's found in `.`). This -is a security feature of Go to prevent against running unintended and possibly +are found in the current directory (e.g. `rclone` if found in `.`). This is a +security feature of Go to prevent against running unintended and possibly harmful executables. The error message for this was just "cannot run executable found relative to diff --git a/changelog/unreleased/issue-4003 b/changelog/unreleased/issue-4003 index 1d5ec6689..37bcf4da6 100644 --- a/changelog/unreleased/issue-4003 +++ b/changelog/unreleased/issue-4003 @@ -1,8 +1,8 @@ -Bugfix: Backup no longer hangs on Solaris when seeing a FIFO file +Bugfix: Make `backup` no longer hang on Solaris when seeing a FIFO file -Restic backup used to hang on Solaris whenever it encountered a FIFO file -(named pipe), due to a bug in the extended attribute handling. This bug has -been fixed. +The `backup` command used to hang on Solaris whenever it encountered a FIFO +file (named pipe), due to a bug in the handling of extended attributes. This +bug has now been fixed. https://github.com/restic/restic/issues/4003 https://github.com/restic/restic/pull/4053 diff --git a/changelog/unreleased/issue-4016 b/changelog/unreleased/issue-4016 index bf0b86409..11dd32332 100644 --- a/changelog/unreleased/issue-4016 +++ b/changelog/unreleased/issue-4016 @@ -1,8 +1,8 @@ Bugfix: Support ExFAT-formatted local backends on macOS Ventura ExFAT-formatted disks could not be used as local backends starting from macOS -Ventura. Restic commands would fail with "inappropriate ioctl for device". This -has been fixed. +Ventura. Restic commands would fail with an "inappropriate ioctl for device" +error. This has now been fixed. https://github.com/restic/restic/issues/4016 https://github.com/restic/restic/pull/4021 diff --git a/changelog/unreleased/issue-4033 b/changelog/unreleased/issue-4033 index 87c1ff255..66093042c 100644 --- a/changelog/unreleased/issue-4033 +++ b/changelog/unreleased/issue-4033 @@ -1,9 +1,11 @@ -Change: copy command no longer prints skipped existing snapshots by default +Change: Don't print skipped snapshots by default in `copy` command -Restic copy always printed each skipped snapshot that existed on the remote and -would bury the snapshots that were copied amongst the output. The new default -only outputs new copies. Increase the verbose level to see skipped existing -snapshots. +The `copy` command used to print each snapshot that was skipped because it +already existed in the target repository. The amount of this output could +practically bury the list of snapshots that were actually copied. + +From now on, the skipped snapshots are by default not printed at all, but +this can be re-enabled by increasing the verbosity level of the command. https://github.com/restic/restic/issues/4033 https://github.com/restic/restic/pull/4066 diff --git a/changelog/unreleased/issue-4085 b/changelog/unreleased/issue-4085 index 7bf50dcbd..0ff53362d 100644 --- a/changelog/unreleased/issue-4085 +++ b/changelog/unreleased/issue-4085 @@ -1,8 +1,10 @@ -Bugfix: Restic init ignores "Access Denied" errors when creating an S3 bucket +Bugfix: Make `init` ignore "Access Denied" errors when creating S3 buckets -In restic 0.9.0 through 0.13.0, some permission errors from S3 backends where ignored -when trying to check the bucket existence, so that manually created buckets with custom permissions -could be used for backups. This feature was broken in 0.14.0, but is now restored. +In restic 0.9.0 through 0.13.0, the `init` command ignored some permission +errors from S3 backends when trying to check for bucket existence, so that +manually created buckets with custom permissions could be used for backups. + +This feature became broken in 0.14.0, but has now been restored again. https://github.com/restic/restic/issues/4085 https://github.com/restic/restic/pull/4086 diff --git a/changelog/unreleased/issue-4103 b/changelog/unreleased/issue-4103 index 5b152f992..c2752f372 100644 --- a/changelog/unreleased/issue-4103 +++ b/changelog/unreleased/issue-4103 @@ -1,9 +1,10 @@ -Bugfix: fix restic dump of tar file with 32-bit binary +Bugfix: Don't generate negative UIDs and GIDs in tar files from `dump` -When using a 32-bit build of restic, the `restic dump` command could in some -cases create tar files containing negative uid and gid. These files cannot be -read by gnu tar. This corner case especially applies to backups from stdin on Windows. -We have changed the dump command to create valid tar files in this case. +When using a 32-bit build of restic, the `dump` command could in some cases +create tar files containing negative UIDs and GIDs, which cannot be read by +GNU tar. This corner case especially applies to backups from stdin on Windows. + +This is now fixed such that `dump` creates valid tar files in these cases too. https://github.com/restic/restic/issues/4103 https://github.com/restic/restic/pull/4104 diff --git a/changelog/unreleased/issue-79 b/changelog/unreleased/issue-79 index b69ea519c..b3ba70ee8 100644 --- a/changelog/unreleased/issue-79 +++ b/changelog/unreleased/issue-79 @@ -1,14 +1,14 @@ -Enhancement: Restore files with many zeros as sparse files +Enhancement: Restore files with long runs of zeros as sparse files When using `restore --sparse`, the restorer may now write files containing long -runs of zeros as sparse files (also called files with holes): the zeros are not -actually written to disk. +runs of zeros as sparse files (also called files with holes), where the zeros +are not actually written to disk. How much space is saved by writing sparse files depends on the operating system, file system and the distribution of zeros in the file. -During backup restic still reads the whole file including sparse regions. We -have optimized the processing speed of sparse regions. +During backup restic still reads the whole file including sparse regions, but +with optimized processing speed of sparse regions. https://github.com/restic/restic/issues/79 https://github.com/restic/restic/issues/3903 diff --git a/changelog/unreleased/pull-2750 b/changelog/unreleased/pull-2750 index 4dcec2204..47eb2b877 100644 --- a/changelog/unreleased/pull-2750 +++ b/changelog/unreleased/pull-2750 @@ -1,6 +1,7 @@ Enhancement: Make backup file read concurrency configurable -The `backup` command now supports a `--read-concurrency` flag to allowing -tuning restic for very fast storage like NVME disks. +The `backup` command now supports a `--read-concurrency` option which allows +tuning restic for very fast storage like NVMe disks by controlling the number +of concurrent file reads during the backup process. https://github.com/restic/restic/pull/2750 diff --git a/changelog/unreleased/pull-3780 b/changelog/unreleased/pull-3780 index 8ec2ca076..1451a54d9 100644 --- a/changelog/unreleased/pull-3780 +++ b/changelog/unreleased/pull-3780 @@ -1,7 +1,8 @@ -Bugfix: Make sure that symlinks can be created during recovery +Bugfix: Make `restore` replace existing symlinks -When restoring a symlink, restic reported an error if the target path already existed. -With this change, the potentially existing target path is first removed before the symlink is recreated. +When restoring a symlink, restic used to report an error if the target path +already existed. This has now been fixed such that the potentially existing +target path is first removed before the symlink is restored. https://github.com/restic/restic/issues/2578 https://github.com/restic/restic/pull/3780 diff --git a/changelog/unreleased/pull-3899 b/changelog/unreleased/pull-3899 index ed26ca591..d1f1678b6 100644 --- a/changelog/unreleased/pull-3899 +++ b/changelog/unreleased/pull-3899 @@ -1,5 +1,6 @@ Enhancement: Optimize prune memory usage -The prune command requires large amounts of memory to determine what to keep and what to remove. That step has been optimized to use up to 30% less memory. +The `prune` command needs large amounts of memory in order to determine what to +keep and what to remove. This is now optimized to use up to 30% less memory. https://github.com/restic/restic/pull/3899 diff --git a/changelog/unreleased/pull-3905 b/changelog/unreleased/pull-3905 index f9d55da6e..6a3189e84 100644 --- a/changelog/unreleased/pull-3905 +++ b/changelog/unreleased/pull-3905 @@ -1,4 +1,4 @@ -Enhancement: Improve speed of parent snapshot searching for `backup` command +Enhancement: Improve speed of parent snapshot detection in `backup` command Backing up a large number of files using `--files-from-verbatim` or `--files-from-raw` options could require a long time to find the parent snapshot. This has been improved. diff --git a/changelog/unreleased/pull-3915 b/changelog/unreleased/pull-3915 index 3b966a425..54e34ac5e 100644 --- a/changelog/unreleased/pull-3915 +++ b/changelog/unreleased/pull-3915 @@ -1,9 +1,12 @@ -Enhancement: add compression statistics to the restic stats command +Enhancement: Add compression statistics to the `stats` command -When executed in `raw-data` mode on a repository that supports compression, the `restic stats` -command now calculates and displays, for the selected repository or snapshots, the uncompressed -size of the data, the compression progress (percentage of data that has been compressed), the -compression ratio of the compressed data and the total space saving, taking into account both -the compressed and uncompressed data if the repository is only partially compressed. +When executed with `--mode raw-data` on a repository that supports compression, +the `stats` command now calculates and displays, for the selected repository or +snapshots: the uncompressed size of the data; the compression progress +(percentage of data that has been compressed); the compression ratio of the +compressed data; the total space saving. + +It also takes into account both the compressed and uncompressed data if the +repository is only partially compressed. https://github.com/restic/restic/pull/3915 diff --git a/changelog/unreleased/pull-3925 b/changelog/unreleased/pull-3925 index 1dcf26e2a..853e7916e 100644 --- a/changelog/unreleased/pull-3925 +++ b/changelog/unreleased/pull-3925 @@ -1,6 +1,6 @@ -Enhancement: Provide command completion for powershell +Enhancement: Provide command completion for PowerShell -Restic allows generation of completion files for bash, fish and zsh. Now powershell -is supported, too. +Restic already provided generation of completion files for bash, fish and zsh. +Now powershell is supported, too. -https://github.com/restic/restic/pull/3925/files \ No newline at end of file +https://github.com/restic/restic/pull/3925/files diff --git a/changelog/unreleased/pull-3931 b/changelog/unreleased/pull-3931 index ca1e27314..2c38e066a 100644 --- a/changelog/unreleased/pull-3931 +++ b/changelog/unreleased/pull-3931 @@ -1,8 +1,10 @@ -Enhancement: Allow backup file tree scanner to be disabled +Enhancement: Allow `backup` file tree scanner to be disabled -Restic walks the file tree in a separate scanner process to find the total size -and file/directory count, and uses that to provide an ETA. This can slow down -backups, especially of network filesystems. The new flag `--no-scan` -can be used to speed up such backups. +The `backup` command walks the file tree in a separate scanner process to find +the total size and file/directory count, and uses this to provide an ETA. This +can slow down backups, especially of network filesystems. + +The command now has a new option `--no-scan` which can be used to disable this +scanning in order to speed up backups when needed. https://github.com/restic/restic/pull/3931 diff --git a/changelog/unreleased/pull-3943 b/changelog/unreleased/pull-3943 index e8f9b5c8f..c2e813d2f 100644 --- a/changelog/unreleased/pull-3943 +++ b/changelog/unreleased/pull-3943 @@ -1,9 +1,9 @@ -Enhancement: Ignore additional files in repository +Enhancement: Ignore additional/unknown files in repository -Some commands like `find` and `restore` could become confused by additional -files in the repository. This could cause restic to fail with an `multiple IDs -with prefix "12345678" found` error. These commands now ignore additional -files. +If a restic repository had additional files in it (not created by restic), +commands like `find` and `restore` could become confused and fail with an +`multiple IDs with prefix "12345678" found` error. These commands now +ignore such additional files. https://github.com/restic/restic/pull/3943 https://forum.restic.net/t/which-protocol-should-i-choose-for-remote-linux-backups/5446/17 diff --git a/changelog/unreleased/pull-3951 b/changelog/unreleased/pull-3951 index db63b0b97..aa913c2f8 100644 --- a/changelog/unreleased/pull-3951 +++ b/changelog/unreleased/pull-3951 @@ -1,6 +1,7 @@ -Bugfix: `ls` returns exit code 1 if snapshot cannot be loaded +Bugfix: Make `ls` return exit code 1 if snapshot cannot be loaded -If the `ls` command failed to load a snapshot, it only printed a warning and -returned exit code 0. This has been changed to return exit code 1 instead. +The `ls` command used to show a warning and return exit code 0 when failing +to load a snapshot. This has now been fixed such that it instead returns exit +code 1 (still showing a warning). https://github.com/restic/restic/pull/3951 diff --git a/changelog/unreleased/pull-3955 b/changelog/unreleased/pull-3955 index 93ec957b2..b8eba1246 100644 --- a/changelog/unreleased/pull-3955 +++ b/changelog/unreleased/pull-3955 @@ -1,9 +1,9 @@ -Enhancement: Improve backup performance for small files +Enhancement: Improve `backup` performance for small files When backing up small files restic was slower than it could be. In particular this affected backups using maximum compression. This has been fixed by reworking the internal parallelism of the backup -command. +command, making it back up small files around two times faster. -https://github.com/restic/restic/issues/3955 +https://github.com/restic/restic/pull/3955 diff --git a/changelog/unreleased/pull-4041 b/changelog/unreleased/pull-4041 index 2e4a8de9d..9ce2b4858 100644 --- a/changelog/unreleased/pull-4041 +++ b/changelog/unreleased/pull-4041 @@ -1,7 +1,7 @@ Change: Update dependencies and require Go 1.18 or newer -We've updated most dependencies. Since some libraries require newer language -features, we're dropping support for Go 1.15 - 1.17, which means that restic now +Most dependencies have been updated. Since some libraries require newer language +features, support for Go 1.15-1.17 has been dropped, which means that restic now requires at least Go 1.18 to build. https://github.com/restic/restic/pull/4041 diff --git a/changelog/unreleased/pull-4100 b/changelog/unreleased/pull-4100 index 33582d72d..e214cbb17 100644 --- a/changelog/unreleased/pull-4100 +++ b/changelog/unreleased/pull-4100 @@ -1,9 +1,11 @@ -Bugfix: Restore self-update to disabled-by-default +Bugfix: Make `self-update` enabled by default only in release builds -Due to a typo, the `self-update` feature was always compiled, even if the -`selfupdate` tag was not explicitly enabled. +The `self-update` command was previously included by default in all builds of +restic as opposed to only in official release builds, even if the `selfupdate` +tag was not explicitly enabled when building. -As intended, it is now disabled by default. -Official builds using `build.go` continue to explicitly enable it. +This has now been corrected, and the `self-update` command is only available +if restic was built with `-tags selfupdate` (as done for official release +builds by `build.go`). https://github.com/restic/restic/pull/4100