Commit Graph

8391 Commits

Author SHA1 Message Date
Michael Eischer a7b13bd603 fs: remove file.Name() from interface
The only user was archiver.fileSaver.
2024-10-18 22:29:03 +02:00
Michael Eischer 0c711f5605 archiver: use correct filepath in fileSaver for vss
When using the VSS FS, then `f.Name()` contained the filename in the
snapshot. This caused a double mapping when calling NodeFromFileInfo.
2024-10-18 22:29:03 +02:00
Michael Eischer 4df2e33568 archiver: properly create node for vss backups
Previously, NodeFromFileInfo used the original file path to create the
node, which also meant that extended metadata was read from there
instead of within the vss snapshot.

This change is a temporary solution for restic 0.17.2 and will be
replaced with a clean fix in restic 0.18.0.
2024-10-18 22:26:18 +02:00
Connor Findlay 9553d873ff backend/azure: Add tests for both token types
Add two new test cases, TestBackendAzureAccountToken and
TestBackendAzureContainerToken, that ensure that the authorization using
both types of token works.

This introduces two new environment variables,
RESTIC_TEST_AZURE_ACCOUNT_SAS and RESTIC_TEST_AZURE_CONTAINER_SAS, that
contain the tokens to use when testing restic. If an environment
variable is missing, the related test is skipped.
2024-10-18 21:59:03 +02:00
Connor Findlay 048c3bb240 changelog: Add changes in issue-4004
Add changelog entry in the 'unreleased' sub-folder for changes
introduced when fixing issue #4004.
2024-10-18 21:59:03 +02:00
Connor Findlay d6e76a22a8 backend/azure: Handle Container SAS/SAT
Ignore AuthorizationFailure caused by using a container level SAS/SAT
token when calling GetProperties during the Create() call. This is because the
GetProperties call expects an Account Level token, and the container
level token simply lacks the appropriate permissions. Supressing the
Authorization Failure is OK, because if the token is actually invalid,
this is caught elsewhere when we try to actually use the token to do
work.
2024-10-18 21:59:03 +02:00
Michael Eischer e3a022f9b5 add irregular files bug changelog 2024-10-18 21:58:04 +02:00
Michael Eischer fe269c752a repair snapshots: remove irregular files 2024-10-18 21:57:52 +02:00
Michael Eischer fc1fc00aa4 backup: exclude irregular files from backup
restic cannot backup irregular files as those don't behave like normal
files. Thus skip them with an error.
2024-10-18 21:56:41 +02:00
greatroar 3c82fe6ef5 fs: Include filename in mknod errors 2024-10-18 21:53:15 +02:00
Michael Eischer 986d981bf6 tag: fix swallowed error if repository cannot be opened 2024-10-18 21:50:29 +02:00
Michael Eischer 0df2fa8135 fs: retry preallocate on Linux if interrupted by signal 2024-10-18 21:47:59 +02:00
Roman Inflianskas 49ccb7734c list: validate subcommand 2024-10-18 21:47:59 +02:00
Roman Inflianskas 491cc65e3a list: add subcommand completion 2024-10-18 21:47:59 +02:00
Damien Clark 8c1d6a50c1 cache: fix race condition in cache cleanup
Fix multiple restic processes executing concurrently and racing to remove obsolete snapshots.

Co-authored-by: Michael Eischer <michael.eischer@fau.de>
2024-10-18 21:47:59 +02:00
Michael Eischer 9386acc4a6 Fix indentation of blockquotes in github release notes 2024-10-18 21:47:59 +02:00
Git'Fellow 5b60d49654 fix: shorten sentence 2024-10-18 21:47:59 +02:00
Git'Fellow 8056181301 docs: Recommend to setup B2 versions lifecycle rules 2024-10-18 21:46:58 +02:00
Alexander Neumann 76a647febf Set development version for 0.17.1 2024-09-05 21:25:24 +02:00
Alexander Neumann 975aa41e1e Add version for 0.17.1 2024-09-05 21:25:21 +02:00
Alexander Neumann a98370cc9e Update manpages and auto-completion 2024-09-05 21:25:21 +02:00
Alexander Neumann d8870a2f73 Generate CHANGELOG.md for 0.17.1 2024-09-05 21:25:20 +02:00
Alexander Neumann 17e54b04ab Prepare changelog for 0.17.1 2024-09-05 21:25:19 +02:00
Michael Eischer 05a8b05773
Merge pull request #5030 from restic/changelogs
doc: Polish unreleased changelogs
2024-09-01 23:45:10 +02:00
Leo R. Lundgren 5d658f216c doc: Polish unreleased changelogs 2024-08-31 19:10:36 +02:00
Michael Eischer 7b0b9539b1
Merge pull request #5029 from MichaelEischer/cleanup-changelogs
cleanup changelogs
2024-08-31 17:04:31 +02:00
Michael Eischer 259caf942d cleanup changelogs 2024-08-31 16:55:38 +02:00
Michael Eischer ba71141f0a backup: support specifying volume instead of path on Windows
"C:" (volume name) versus "C:\" (path)
2024-08-31 16:50:06 +02:00
Michael Eischer 174f20dc4a use OrderedListOnceBackend where possible 2024-08-31 16:50:06 +02:00
Michael Eischer 361fbbf58f Add temporary files repositories in integration tests
This is intended to catch problems with temporary files stored in the
backend, even if the responsible component forgets to test for those.
2024-08-31 16:50:06 +02:00
Michael Eischer 1f4c9d2806 cache: correctly ignore files whose filename is no ID
this can for example be the case for temporary files created by the
backend implementation.
2024-08-31 16:50:06 +02:00
Michael Eischer a12a6edfd1 add changelog for security descriptor race condition 2024-08-30 12:46:07 +02:00
Michael Eischer ac5bc7c2f9 fs: fix error handling for retried get/set of security descriptor
The retry code path did not filter `ERROR_NOT_SUPPORTED`. Just call the
original function a second time to correctly follow the low privilege
code path.
2024-08-30 12:46:07 +02:00
Michael Eischer 3e4c1ea196 fs: fix race condition in get/set security descriptor
Calling `Load()` twice for an atomic variable can return different
values each time. This resulted in trying to read the security
descriptor with high privileges, but then not entering the code path to
switch to low privileges when another thread has already done so
concurrently.
2024-08-30 12:46:07 +02:00
Michael Eischer 8828c76f92 rest: improve handling of HTTP2 goaway
The HTTP client can only retry HTTP2 requests after receiving a GOAWAY
response if it can rewind the body. As we use a custom data type,
explicitly provide an implementation of `GetBody`.
2024-08-30 12:46:07 +02:00
Michael Eischer 55ff4e046e doc: full tree blob data structure is in the code 2024-08-30 12:46:07 +02:00
Michael Eischer 7ea558db99 doc: JSON encoder must be deterministic 2024-08-30 12:46:07 +02:00
Michael Eischer 71e8068d86 doc: mark S3 layout as deprecated 2024-08-30 12:46:07 +02:00
Michael Eischer a45d21e2b9 doc: describe how to handle rewrite encoding error 2024-08-30 12:46:07 +02:00
Michael Eischer 97eb81564a doc: fix typos 2024-08-30 12:45:20 +02:00
Michael Eischer 262e85c37f doc: shrink wasabi / alibaba cloud example
Remove descriptions for both providers and shorten the example to the
minimum.
2024-08-30 12:45:20 +02:00
Michael Eischer f451001f75 doc: use regional urls for Amazon S3 and add generic s3 provider section
Split description for non-Amazon S3 providers into separate section. The
section now also includes the `s3.bucket-lookup` extended option. Switch
to using regional URLs for Amazon S3 to replace the need for setting the
region.
2024-08-30 12:45:20 +02:00
Michael Eischer 5980daea64 doc/backup: move exit status codes section up 2024-08-30 12:45:20 +02:00
Michael Eischer 6b4f16f77b doc/backup: link to exit code for scripting section 2024-08-30 12:45:20 +02:00
Michael Eischer 64d628bd75 make timeout for slow requests configurable 2024-08-30 12:45:20 +02:00
Michael Eischer 6eece31dc3 lock: introduce short delay between failed locking retries
Failed locking attempts were immediately retried up to three times
without any delay between the retries. If a lock file is not found while
checking for other locks, with the reworked backend retries there is no
delay between those retries. This is a problem if a backend requires a
few seconds to reflect file deletions in the file listings. To work
around this problem, introduce a short exponentially increasing delay
between the retries. The number of retries is now increased to 4. This
results in delays of 5, 10 and 20 seconds between the retries.
2024-08-30 12:45:20 +02:00
Michael Eischer 8206cd19c8 backend/retry: don't trip circuit breaker if context is canceled
When the context used for a load operation is canceled, then the result
is always an error independent of whether the file could be retrieved
from the backend. Do not false positively trip the circuit breaker in
this case.

The old behavior was problematic when trying to lock a repository. When
`Lock.checkForOtherLocks` listed multiple lock files in parallel and one
of them fails to load, then all other loads were canceled. This
cancelation was remembered by the circuit breaker, such that locking
retries would fail.
2024-08-30 12:45:20 +02:00
Michael Eischer a99b824508 update docs 2024-08-30 12:45:20 +02:00
Michael Eischer 424740f62c Add missing DisableAutoGenTag flag for commands 2024-08-30 12:45:20 +02:00
Michael Eischer e5a08e6808 group commands and make features/options visible 2024-08-30 12:45:20 +02:00