fix(deps): update module github.com/restic/restic to v0.16.0 #796
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v0.14.0
->v0.16.0
area:operator
,area:chart
chart:k8up
Release Notes
restic/restic (github.com/restic/restic)
v0.16.0
: restic 0.16.0Compare Source
restic 0.16.0 has been released!
restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum. If you already have restic >= 0.9.4, you can use
restic self-update
to get the latest version in a secure way.The binaries released with each restic version are reproducible, which means that you can reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.
Changelog for restic 0.16.0 (2023-07-31)
The following sections list the changes in restic 0.16.0 relevant to restic users. The changes are ordered by importance.
Summary
forget --keep-*
optionsbackup
commandgenerate
andinit
no longer silently ignore unexpected argumentsrest
backendscan_finished
for thebackup
command--retry-lock
optionrestic find
repair index
andrepair snapshots
commandsazure
backend<snapshot>:<subfolder>
syntax to select subfolders--group-by
for backup parent selection--human-readable
option tols
andfind
commandsjq
binary to Docker imagegs
backendDetails
Bugfix #2565: Support "unlimited" in
forget --keep-*
optionsRestic 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 valueunlimited
is now supported. For example,--keep-monthly unlimited
will keep all monthly snapshots.#2565 #4234
Bugfix #3311: Support non-UTF8 paths as symlink target
Earlier restic versions did not correctly
backup
andrestore
symlinks that contain a non-UTF8 target. Note that this only affected systems that still use a non-Unicode encoding for filesystem paths.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.#3311 #3802
Bugfix #4199: 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.
#4199 #4304
Bugfix #4274: 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 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.
#4274 #4374
Bugfix #4319: Correctly clean up status bar output of the
backup
commandDue 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 now been fixed.#4319 #4318
Bugfix #4333:
generate
andinit
no longer silently ignore unexpected arguments#4333
Bugfix #4400: Ignore missing folders in
rest
backendIf 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 now fixed.
#235 #4400
Change #4176: Fix JSON message type of
scan_finished
for thebackup
commandRestic incorrectly set the
message_type
of thescan_finished
message tostatus
instead ofverbose_status
. This has now been corrected so that the messages report the correct type.#4176
Change #4201: 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 however continue to build with Go 1.18.
#4201
Enhancement #426: 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
JSON output is now also supported.
#426 #3413 #3627 #3991 #4314 https://forum.restic.net/t/progress-bar-for-restore/5210
Enhancement #719: Add
--retry-lock
optionThis option allows specifying a duration for which restic will wait if the repository is already locked.
#719 #2214 #4107
Enhancement #1495: Sort snapshots by timestamp in
restic find
The
find
command used to print snapshots in an arbitrary order. Restic now prints snapshots sorted by timestamp.#1495 #4409
Enhancement #1759: Add
repair index
andrepair snapshots
commandsThe
rebuild-index
command has been renamed torepair 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 files in it were damaged and other files were still fine.
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.#1759 #1714 #1798 #2334 #2876 https://forum.restic.net/t/corrupted-repo-how-to-repair/799https://forum.restic.net/t/recovery-options-for-damaged-repositories/1571
Enhancement #1926: Allow certificate paths to be passed through environment variables
Restic will now read paths to certificates from the environment variables
RESTIC_CACERT
orRESTIC_TLS_CLIENT_CERT
if--cacert
or--tls-client-cert
are not specified.#1926 #4384
Enhancement #2359: Provide multi-platform Docker images
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 images are also available on ghcr.io, the GitHub Container Registry.
#2359 #4269 #4364
Enhancement #2468: Add support for non-global Azure clouds
The
azure
backend previously only supported storages using the global domaincore.windows.net
. This meant that backups to other domains such as Azure China (core.chinacloudapi.cn
) or Azure Germany (core.cloudapi.de
) were not supported. Restic now allows overriding the global domain using the environment variableAZURE_ENDPOINT_SUFFIX
.#2468 #4387
Enhancement #2679: Reduce file fragmentation for local backend
Before this change, local backend files could become fragmented. Now restic will try to preallocate space for pack files to avoid their fragmentation.
#2679 #3261
Enhancement #3328: 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.#3328 #4352 #4353
Enhancement #3397: 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.
#3397 #3563
Enhancement #3624: Keep oldest snapshot when there are not enough snapshots
The
forget
command now additionally preserves the oldest snapshot if fewer snapshots than allowed by the--keep-*
parameters would otherwise be kept. This maximizes the amount of history kept within the specified limits.#3624 #4366 https://forum.restic.net/t/keeping-yearly-snapshots-policy-when-backup-began-during-the-year/4670/2
Enhancement #3698: Add support for Managed / Workload Identity to
azure
backendRestic now additionally supports authenticating to Azure using Workload Identity or Managed Identity credentials, which are automatically injected in several environments such as a managed Kubernetes cluster.
#3698 #4029
Enhancement #3871: Support
<snapshot>:<subfolder>
syntax to select subfoldersCommands like
diff
orrestore
always worked with the full snapshot. This did not allow comparing only a specific subfolder or only restoring that folder (restore --include subfolder
filters the restored files, but still creates the directories included insubfolder
).The commands
diff
,dump
,ls
andrestore
now support the<snapshot>:<subfolder>
syntax, wheresnapshot
is the ID of a snapshot (or the stringlatest
) andsubfolder
is a path within the snapshot. The commands will then only work with the specified path of the snapshot. Thesubfolder
must be a path to a folder as returned byls
. Two examples:restic restore -t target latest:/some/path
restic diff 12345678:/some/path 90abcef:/some/path
For debugging purposes, the
cat
command now supportscat tree <snapshot>:<subfolder>
to return the directory metadata for the given subfolder.#3871 #4334
Enhancement #3941: Support
--group-by
for backup parent selectionPreviously, the
backup
command by default selected the parent snapshot based on the hostname and the backup targets. When the backup path list changed, thebackup
command was unable to determine a suitable parent snapshot and had to read all files again.The new
--group-by
option for thebackup
command allows filtering snapshots for the parent selection byhost
,paths
andtags
. It defaults tohost,paths
which selects the latest snapshot with hostname and paths matching 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 toforget --group-by
.#3941 #4081
Enhancement #4130: 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.
#4130 #4166
Enhancement #4159: Add
--human-readable
option tols
andfind
commandsPreviously, when using the
-l
option with thels
andfind
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 of14680064
will be shown as14.000 MiB
.#4159 #4351
Enhancement #4188: Include restic version in snapshot metadata
The restic version used to backup a snapshot is now included in its metadata and shown when inspecting a snapshot using
restic cat snapshot <snapshotID>
orrestic snapshots --json
.#4188 #4378
Enhancement #4220: Add
jq
binary to Docker imageThe Docker image now contains
jq
, which can be useful to process JSON data output by restic.#4220
Enhancement #4226: Allow specifying region of new buckets in the
gs
backendPreviously, 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.#4226
Enhancement #4375: Add support for extended attributes on symlinks
Restic now supports extended attributes on symlinks when backing up, restoring, or FUSE-mounting snapshots. This includes, for example, the
security.selinux
xattr on Linux distributions that use SELinux.#4375 #4379
v0.15.2
: Restic 0.15.2Compare Source
We're very pleased to present you restic 0.15.2! This is just (another) small bugfix release.
restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum. If you already have restic >= 0.9.4, you can use
restic self-update
to get the latest version in a secure way.The binaries released with each restic version are reproducible, which means that you can reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.
Changelog for restic 0.15.2 (2023-04-24)
The following sections list the changes in restic 0.15.2 relevant to restic users. The changes are ordered by importance.
Summary
backup
during processingdump
interpret--host
and--path
correctlymount
Details
Security #4275: Update golang.org/x/net to address CVE-2022-41723
#4275 #4213
Bugfix #2260: Sanitize filenames printed by
backup
during processingThe
backup
command would previously not sanitize the filenames it printed during processing, potentially causing newlines or terminal control characters to mangle the status output or even change the state of a terminal.Filenames are now checked and quoted if they contain non-printable or non-Unicode characters.
#2260 #4191 #4192
Bugfix #4211: Make
dump
interpret--host
and--path
correctlyA regression in restic 0.15.0 caused
dump
to confuse its--host=<host>
and--path=<path>
options: it looked for snapshots with paths called<host>
from hosts called<path>
. It now treats the options as intended.#4211 #4212
Bugfix #4239: Correct number of blocks reported in mount point
Restic mount points reported an incorrect number of 512-byte (POSIX standard) blocks for files and links due to a rounding bug. In particular, empty files were reported as taking one block instead of zero.
The rounding is now fixed: the number of blocks reported is the file size (or link target size) divided by 512 and rounded up to a whole number.
#4239 #4240
Bugfix #4253: Minimize risk of spurious filesystem loops with
mount
When a backup contains a directory that has the same name as its parent, say
a/b/b
, and the GNUfind
command was run on this backup in a restic mount,find
would refuse to traverse the lowestb
directory, instead printingFile system loop detected
. This was due to the way the restic mount command generates inode numbers for directories in the mount point.The rule for generating these inode numbers was changed in 0.15.0. It has now been changed again to avoid this issue. A perfect rule does not exist, but the probability of this behavior occurring is now extremely small.
When it does occur, the mount point is not broken, and scripts that traverse the mount point should work as long as they don't rely on inode numbers for detecting filesystem loops.
#4253 #4255
Enhancement #4180: Add release binaries for riscv64 architecture on Linux
Builds for the
riscv64
architecture on Linux are now included in the release binaries.#4180
Enhancement #4219: Upgrade Minio to version 7.0.49
The upgraded version now allows use of the
ap-southeast-4
region (Melbourne).#4219
v0.15.1
: restic 0.15.1Compare Source
We're very pleased to present you restic 0.15.1! This is just a small bugfix release, fixing some issues that arose after 0.15.0 was published.
restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum. If you already have restic >= 0.9.4, you can use
restic self-update
to get the latest version in a secure way.The binaries released with each restic version are reproducible, which means that you can reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.
Changelog for restic 0.15.1 (2023-01-30)
The following sections list the changes in restic 0.15.1 relevant to restic users. The changes are ordered by importance.
Summary
b2_download_file_by_name: 404
warning from B2 backendprune --quiet
not print progress barself-update --output
work with new filename on Windowsbackup
progress barDetails
Bugfix #3750: Remove
b2_download_file_by_name: 404
warning from B2 backendIn some cases the B2 backend could print
b2_download_file_by_name: 404: : b2.b2err
warnings. These are only debug messages and can be safely ignored.Restic now uses an updated library for accessing B2, which removes the warning.
#3750 #4144 #4146
Bugfix #4147: Make
prune --quiet
not print progress barA regression in restic 0.15.0 caused
prune --quiet
to show a progress bar while deciding how to process each pack files. This has now been fixed.#4147 #4153
Bugfix #4163: Make
self-update --output
work with new filename on WindowsSince restic 0.14.0 the
self-update
command did not work when a custom output filename was specified via the--output
option. This has now been fixed.As a workaround, either use an older restic version to run the self-update or create an empty file with the output filename before updating e.g. using CMD:
type nul > new-file.exe
restic self-update --output new-file.exe
#4163 https://forum.restic.net/t/self-update-windows-started-failing-after-release-of-0-15/5836
Bugfix #4167: Add missing ETA in
backup
progress barA regression in restic 0.15.0 caused the ETA to be missing from the progress bar displayed by the
backup
command. This has now been fixed.#4167
Enhancement #4143: Ignore empty lock files
With restic 0.15.0 the checks for stale locks became much stricter than before. In particular, empty or unreadable locks were no longer silently ignored. This made restic to complain with
Load(<lock/1234567812>, 0, 0) returned error, retrying after 552.330144ms: load(<lock/1234567812>): invalid data returned
and fail in the end.The error message is now clarified and the implementation changed to ignore empty lock files which are sometimes created as the result of a failed uploads on some backends.
Please note that unreadable lock files still have to cleaned up manually. To do so, you can run
restic unlock --remove-all
which removes all existing lock files. But first make sure that no other restic process is currently using the repository.#4143 #4152
v0.15.0
: restic 0.15.0Compare Source
We're very pleased to present you restic 0.15.0!
In this version a new
rewrite
command has been implemented. This allows for removing unwanted data from existing snapshots, for example if one discovers that some files were unintentionally backed up, such as files with sensitive content or files that take up a lot of space and don't need to be backed up. Please see the corresponding documentation for more information and usage examples.restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum. If you already have restic >= 0.9.4, you can use
restic self-update
to get the latest version in a secure way.The binaries released with each restic version are reproducible, which means that you can reproduce a byte identical version from the source code for that release. Instructions on how to do that in the Developer Documentation.
Changelog for restic 0.15.0 (2023-01-12)
The following sections list the changes in restic 0.15.0 relevant to restic users. The changes are ordered by importance.
Summary
mount
return exit code 0 after receiving Ctrl-C / SIGINTrestore
replace existing symlinksbackup --stdin
mount
commandcopy
command when-o <backend>.connections=1
ls
return exit code 1 if snapshot cannot be loadedbackup
no longer hang on Solaris when seeing a FIFO fileinit
ignore "Access Denied" errors when creating S3 bucketsself-update
enabled by default only in release buildsdump
backup
unlock
display message only when locks were actually removedcopy
commandrewrite
commandinit
open only one connection for the SFTP backendcredential_process
to S3 backendmount
command support macOS using macFUSE 4.xinit
commandbackup
commandstats
commandbackup
file tree scanner to be disabledbackup
performance for small filesDetails
Bugfix #2015: Make
mount
return exit code 0 after receiving Ctrl-C / SIGINTTo 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.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.#2015 #3894
Bugfix #2578: Make
restore
replace existing symlinksWhen 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.
#2578 #3780
Bugfix #2591: Don't read password from stdin for
backup --stdin
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, 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).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.#2591 #4011
Bugfix #3161: Delete files on Backblaze B2 more reliably
Restic used to only delete the latest version of files stored in B2. In most 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.
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.
#3161 #3885
Bugfix #3336: Make SFTP backend report 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 implemented in restic 0.12.1, but unfortunately the fix itself contained a bug that prevented it from taking effect.
#3336 #3345 #4075
Bugfix #3567: Improve handling of interrupted syscalls in
mount
commandAccessing 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.
#3567 #3694 #3875
Bugfix #3897: Fix stuck
copy
command when-o <backend>.connections=1
When running the
copy
command with-o <backend>.connections=1
the command would be infinitely stuck. This has now been fixed.#3897 #3898
Bugfix #3918: 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 e.g. report a too high value for the unused size, such as "unused size after prune:1677721
.991 TiB". This has now been fixed.#3918 #3980
Bugfix #3951: Make
ls
return exit code 1 if snapshot cannot be loadedThe
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).#3951
Bugfix #4003: Make
backup
no longer hang on Solaris when seeing a FIFO fileThe
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.#4003 #4053
Bugfix #4016: 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 an "inappropriate ioctl for device" error. This has now been fixed.
#4016 #4021
Bugfix #4085: Make
init
ignore "Access Denied" errors when creating S3 bucketsIn 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.
#4085 #4086
Bugfix #4100: Make
self-update
enabled by default only in release buildsThe
self-update
command was previously included by default in all builds of restic as opposed to only in official release builds, even if theselfupdate
tag was not explicitly enabled when building.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 bybuild.go
).#4100
Bugfix #4103: Don't generate negative UIDs and GIDs in tar files from
dump
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.#4103 #4104
Change #2724: 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, as the latter can be ambiguous in some rare cases. To derive the short ID, please truncate the full ID down to eight characters.
#2724 #3993
Change #3929: Make
unlock
display message only when locks were actually removedThe
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.
#3929 #3935
Change #4033: Don't print skipped snapshots by default in
copy
commandThe
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.
#4033 #4066
Change #4041: Update dependencies and require Go 1.18 or newer
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.
#4041
Enhancement #14: Implement
rewrite
commandRestic now has a
rewrite
command which allows to rewrite existing snapshots to remove unwanted files.#14 #2731 #4079
Enhancement #79: 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), 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, but with optimized processing speed of sparse regions.
#79 #3903 #2601 #3854 https://forum.restic.net/t/sparse-file-support/1264
Enhancement #1078: Support restoring symbolic links on Windows
The
restore
command now supports restoring symbolic links on Windows. Because of Windows specific restrictions this is only possible when running restic with theSeCreateSymbolicLinkPrivilege
privilege or as an administrator.#1078 #2699 #2875
Enhancement #1734: Inform about successful retries after errors
When a recoverable error is encountered, restic shows a warning message saying that it's retrying, e.g.:
Save(<data/956b9ced99>) returned error, retrying after 357.131936ms: ...
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.:
Save(<data/956b9ced99>) operation successful after 1 retries
#1734 #2661
Enhancement #1866: Improve handling of directories with duplicate entries
If for some reason a directory contains a duplicate entry, the
backup
command would previously fail with anode "path/to/file" already present
ornodes are not ordered got "path/to/file", last "path/to/file"
error.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!
#1866 #3937 #3880
Enhancement #2134: 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 can prevent an attacker from deleting backups with such an API key.
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 theb2
command line tool:b2 create-key --bucket <bucketName> <keyName> 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 of being deleted permanently.
#2134 #2398
Enhancement #2152: Make
init
open only one connection for the SFTP backendThe
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 causeinit
to fail if the server does not correctly close the first SFTP connection.This has now been fixed by reusing the first/initial SFTP connection opened.
#2152 #3882
Enhancement #2533: 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.
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 also handle temporary download problems.
#2533 #3521
Enhancement #2715: Stricter repository lock handling
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
andprune
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.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.#2715 #3569
Enhancement #2750: Make backup file read concurrency configurable
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.#2750
Enhancement #3029: Add support for
credential_process
to S3 backendRestic now uses a newer library for the S3 backend, which adds support for the
credential_process
option in the AWS credential configuration.#3029 #4034 #4025
Enhancement #3096: Make
mount
command support macOS using macFUSE 4.xRestic 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.#3096 #4024
Enhancement #3124: Support JSON output for the
init
commandThe
init
command used to ignore the--json
option, but now outputs a JSON message if the repository was created successfully.#3124 #3132
Enhancement #3899: Optimize prune memory usage
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.#3899
Enhancement #3905: Improve speed of parent snapshot detection in
backup
commandBacking 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.#3905
Enhancement #3915: Add compression statistics to the
stats
commandWhen executed with
--mode raw-data
on a repository that supports compression, thestats
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.
#3915
Enhancement #3925: Provide command completion for PowerShell
Restic already provided generation of completion files for bash, fish and zsh. Now powershell is supported, too.
#3925
Enhance
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.