Michael Eischer
9e2d60e28c
Merge pull request #5632 from restic/dependabot/go_modules/github.com/minio/minio-go/v7-7.0.97
...
build(deps): bump github.com/minio/minio-go/v7 from 7.0.95 to 7.0.97
2025-12-03 21:34:27 +01:00
Michael Eischer
ebc51e60c9
Merge pull request #5626 from MichaelEischer/lazy-status
...
ui: only redraw status bar if it has not changed
2025-12-03 21:29:35 +01:00
dependabot[bot]
a9a13afcec
build(deps): bump github.com/minio/minio-go/v7 from 7.0.95 to 7.0.97
...
Bumps [github.com/minio/minio-go/v7](https://github.com/minio/minio-go ) from 7.0.95 to 7.0.97.
- [Release notes](https://github.com/minio/minio-go/releases )
- [Commits](https://github.com/minio/minio-go/compare/v7.0.95...v7.0.97 )
---
updated-dependencies:
- dependency-name: github.com/minio/minio-go/v7
dependency-version: 7.0.97
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 20:24:30 +00:00
Michael Eischer
d7b87cedbc
Merge pull request #5630 from restic/dependabot/go_modules/github.com/ncw/swift/v2-2.0.5
...
build(deps): bump github.com/ncw/swift/v2 from 2.0.4 to 2.0.5
2025-12-03 21:23:18 +01:00
Michael Eischer
a8be8e36fa
Merge pull request #5621 from MichaelEischer/copy-stream-snapshots
...
copy: iterate through snapshots
2025-12-03 21:21:05 +01:00
dependabot[bot]
74f72ec707
build(deps): bump github.com/ncw/swift/v2 from 2.0.4 to 2.0.5
...
Bumps [github.com/ncw/swift/v2](https://github.com/ncw/swift ) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/ncw/swift/releases )
- [Changelog](https://github.com/ncw/swift/blob/master/RELEASE.md )
- [Commits](https://github.com/ncw/swift/compare/v2.0.4...v2.0.5 )
---
updated-dependencies:
- dependency-name: github.com/ncw/swift/v2
dependency-version: 2.0.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 20:06:29 +00:00
Michael Eischer
0b0b714b84
Merge pull request #5628 from MichaelEischer/cleanup-old-build-lines
...
remove old // +build comments
2025-12-03 21:06:11 +01:00
Michael Eischer
3df4582b2b
Merge pull request #5635 from restic/dependabot/github_actions/golangci/golangci-lint-action-9
...
build(deps): bump golangci/golangci-lint-action from 8 to 9
2025-12-03 21:03:55 +01:00
Michael Eischer
a24184357e
Merge pull request #5634 from restic/dependabot/github_actions/actions/checkout-6
...
build(deps): bump actions/checkout from 5 to 6
2025-12-03 21:00:50 +01:00
Michael Eischer
0d024ad046
Merge pull request #5631 from restic/dependabot/go_modules/github.com/Azure/azure-sdk-for-go/sdk/azidentity-1.13.1
...
build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.13.0 to 1.13.1
2025-12-03 20:58:55 +01:00
Michael Eischer
3efd7b5fd0
Merge pull request #5629 from restic/dependabot/go_modules/github.com/klauspost/compress-1.18.1
...
build(deps): bump github.com/klauspost/compress from 1.18.0 to 1.18.1
2025-12-03 20:58:48 +01:00
dependabot[bot]
0af1257184
build(deps): bump golangci/golangci-lint-action from 8 to 9
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 8 to 9.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v8...v9 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-version: '9'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 01:14:24 +00:00
dependabot[bot]
a3f1c65022
build(deps): bump actions/checkout from 5 to 6
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 01:14:22 +00:00
dependabot[bot]
fa4ca9b5b4
build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/azidentity
...
Bumps [github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go ) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases )
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.13.0...sdk/azidentity/v1.13.1 )
---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azidentity
dependency-version: 1.13.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 01:04:00 +00:00
dependabot[bot]
ebdeecde42
build(deps): bump github.com/klauspost/compress from 1.18.0 to 1.18.1
...
Bumps [github.com/klauspost/compress](https://github.com/klauspost/compress ) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/klauspost/compress/releases )
- [Commits](https://github.com/klauspost/compress/compare/v1.18.0...v1.18.1 )
---
updated-dependencies:
- dependency-name: github.com/klauspost/compress
dependency-version: 1.18.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 01:03:43 +00:00
Michael Eischer
1e6ed458ff
remove old // +build comments
2025-11-30 11:53:23 +01:00
Michael Eischer
ae6d6bd9a6
ui: only redraw status bar if it has not changed
2025-11-29 22:09:41 +01:00
Aneesh N
b9afdf795e
Fix: Correctly restore ACL inheritance state ( #5465 )
...
* Fix: Correctly restore ACL inheritance state
When restoring a file or directory on Windows, the `IsInherited` property of its Access Control Entries (ACEs) was always being set to `False`, even if the ACEs were inherited in the original backup.
This was caused by the restore process calling the `SetNamedSecurityInfo` API without providing context about the object's inheritance policy. By default, this API applies the provided Discretionary Access Control List (DACL) as an explicit set of permissions, thereby losing the original inheritance state.
This commit fixes the issue by inspecting the `Control` flags of the saved Security Descriptor during restore. Based on whether the `SE_DACL_PROTECTED` flag is present, the code now adds the appropriate `PROTECTED_DACL_SECURITY_INFORMATION` or `UNPROTECTED_DACL_SECURITY_INFORMATION` flag to the `SetNamedSecurityInfo` API call.
By providing this crucial inheritance context, the Windows API can now correctly reconstruct the ACL, ensuring the `IsInherited` status of each ACE is preserved as it was at the time of backup.
* Fix: Correctly restore ACL inheritance flags
This commit resolves an issue where the ACL inheritance state (`IsInherited` property) was not being correctly restored for files and directories on Windows.
The root cause was that the `SECURITY_INFORMATION` flags used in the `SetNamedSecurityInfo` API call contained both the `PROTECTED_DACL_SECURITY_INFORMATION` and `UNPROTECTED_DACL_SECURITY_INFORMATION` flags simultaneously. When faced with this conflicting information, the Windows API defaulted to the more restrictive `PROTECTED` behavior, incorrectly disabling inheritance on restored items.
The fix modifies the `setNamedSecurityInfoHigh` function to first clear all existing inheritance-related flags from the `securityInfo` bitmask. It then adds the single, correct flag (`PROTECTED` or `UNPROTECTED`) based on the `SE_DACL_PROTECTED` control bit from the original, saved Security Descriptor.
This ensures that the API receives unambiguous instructions, allowing it to correctly preserve the inheritance state as it was at the time of backup. The accompanying test case for ACL inheritance now passes with this change.
* Fix inheritance flag handling in low-privilege security descriptor restore
When restoring files without admin privileges, the IsInherited property
of Access Control Entries (ACEs) was not being preserved correctly.
The low-privilege restore path (setNamedSecurityInfoLow) was using a
static PROTECTED_DACL_SECURITY_INFORMATION flag, which always marked
the restored DACL as explicitly set rather than inherited.
This commit updates setNamedSecurityInfoLow to dynamically determine
the correct inheritance flag based on the SE_DACL_PROTECTED control
flag from the original security descriptor, matching the behavior of
the high-privilege path (setNamedSecurityInfoHigh).
Changes:
- Update setNamedSecurityInfoLow to accept control flags parameter
- Add logic to set either PROTECTED_DACL_SECURITY_INFORMATION or
UNPROTECTED_DACL_SECURITY_INFORMATION based on the original SD
- Add TestRestoreSecurityDescriptorInheritanceLowPrivilege to verify
inheritance is correctly restored in low-privilege scenarios
This ensures that both admin and non-admin restore operations correctly
preserve the inheritance state of ACLs, maintaining the original
permissions flow on child objects.
Addresses review feedback on PR for issue #5427
* Refactor security flags into separate backup/restore variants
Split highSecurityFlags into highBackupSecurityFlags and
highRestoreSecurityFlags to avoid runtime bitwise operations.
This makes the code cleaner and more maintainable by using
appropriate flags for GET vs SET operations.
Addresses review feedback on PR for issue #5427
---------
Co-authored-by: Aneesh Nireshwalia <anireshw@akamai.com>
2025-11-28 19:22:47 +00:00
Winfried Plappert
ce57961f14
restic check with snapshot filters ( #5469 )
...
---------
Co-authored-by: Michael Eischer <michael.eischer@fau.de>
2025-11-28 19:12:38 +00:00
Michael Eischer
e1bc2fb71a
copy: iterate through snapshots
2025-11-26 22:48:54 +01:00
Michael Eischer
8fdbdc57a0
Merge pull request #5581 from restic/dependabot/go_modules/google.golang.org/api-0.254.0
...
build(deps): bump google.golang.org/api from 0.248.0 to 0.254.0
2025-11-26 22:24:43 +01:00
dependabot[bot]
69ac0d84ac
build(deps): bump google.golang.org/api from 0.248.0 to 0.254.0
...
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client ) from 0.248.0 to 0.254.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases )
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md )
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.248.0...v0.254.0 )
---
updated-dependencies:
- dependency-name: google.golang.org/api
dependency-version: 0.254.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 21:12:48 +00:00
Michael Eischer
0a96f0d623
Merge pull request #5578 from restic/dependabot/go_modules/cloud.google.com/go/storage-1.57.1
...
build(deps): bump cloud.google.com/go/storage from 1.56.1 to 1.57.1
2025-11-26 22:12:09 +01:00
Michael Eischer
0d8b715d92
Merge pull request #5547 from restic/dependabot/go_modules/golang-x-deps-3a742399ff
...
build(deps): bump the golang-x-deps group with 8 updates
2025-11-26 22:11:35 +01:00
dependabot[bot]
31e3717b25
build(deps): bump the golang-x-deps group with 8 updates
...
Bumps the golang-x-deps group with 8 updates:
| Package | From | To |
| --- | --- | --- |
| [golang.org/x/crypto](https://github.com/golang/crypto ) | `0.41.0` | `0.42.0` |
| [golang.org/x/net](https://github.com/golang/net ) | `0.43.0` | `0.44.0` |
| [golang.org/x/oauth2](https://github.com/golang/oauth2 ) | `0.30.0` | `0.31.0` |
| [golang.org/x/sync](https://github.com/golang/sync ) | `0.16.0` | `0.17.0` |
| [golang.org/x/sys](https://github.com/golang/sys ) | `0.35.0` | `0.36.0` |
| [golang.org/x/term](https://github.com/golang/term ) | `0.34.0` | `0.35.0` |
| [golang.org/x/text](https://github.com/golang/text ) | `0.28.0` | `0.29.0` |
| [golang.org/x/time](https://github.com/golang/time ) | `0.12.0` | `0.13.0` |
Updates `golang.org/x/crypto` from 0.41.0 to 0.42.0
- [Commits](https://github.com/golang/crypto/compare/v0.41.0...v0.42.0 )
Updates `golang.org/x/net` from 0.43.0 to 0.44.0
- [Commits](https://github.com/golang/net/compare/v0.43.0...v0.44.0 )
Updates `golang.org/x/oauth2` from 0.30.0 to 0.31.0
- [Commits](https://github.com/golang/oauth2/compare/v0.30.0...v0.31.0 )
Updates `golang.org/x/sync` from 0.16.0 to 0.17.0
- [Commits](https://github.com/golang/sync/compare/v0.16.0...v0.17.0 )
Updates `golang.org/x/sys` from 0.35.0 to 0.36.0
- [Commits](https://github.com/golang/sys/compare/v0.35.0...v0.36.0 )
Updates `golang.org/x/term` from 0.34.0 to 0.35.0
- [Commits](https://github.com/golang/term/compare/v0.34.0...v0.35.0 )
Updates `golang.org/x/text` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/golang/text/releases )
- [Commits](https://github.com/golang/text/compare/v0.28.0...v0.29.0 )
Updates `golang.org/x/time` from 0.12.0 to 0.13.0
- [Commits](https://github.com/golang/time/compare/v0.12.0...v0.13.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.42.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/net
dependency-version: 0.44.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/oauth2
dependency-version: 0.31.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/sync
dependency-version: 0.17.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/sys
dependency-version: 0.36.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/term
dependency-version: 0.35.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/text
dependency-version: 0.29.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
- dependency-name: golang.org/x/time
dependency-version: 0.13.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: golang-x-deps
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 20:56:35 +00:00
dependabot[bot]
42133ccffe
build(deps): bump cloud.google.com/go/storage from 1.56.1 to 1.57.1
...
Bumps [cloud.google.com/go/storage](https://github.com/googleapis/google-cloud-go ) from 1.56.1 to 1.57.1.
- [Release notes](https://github.com/googleapis/google-cloud-go/releases )
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md )
- [Commits](https://github.com/googleapis/google-cloud-go/compare/storage/v1.56.1...storage/v1.57.1 )
---
updated-dependencies:
- dependency-name: cloud.google.com/go/storage
dependency-version: 1.57.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-11-26 20:56:27 +00:00
Michael Eischer
77374b5bf0
Merge pull request #5619 from restic/bump-go-version
...
bump minimum go version to 1.24
2025-11-26 21:55:02 +01:00
Michael Eischer
f3a89bfff6
Merge pull request #5612 from MichaelEischer/repository-async-saveblob
...
repository: add async blob upload method
2025-11-26 21:34:35 +01:00
Michael Eischer
7696e4b495
bump minimum go version to 1.24
2025-11-26 21:33:40 +01:00
Michael Eischer
5cc8636047
Merge pull request #5614 from MichaelEischer/fix-lookupblobsize
...
repository: fix LookupBlobSize to also return pending blobs
2025-11-26 21:24:32 +01:00
Michael Eischer
6769d26068
archiver: improve test reliability
2025-11-26 21:21:16 +01:00
Michael Eischer
5607fd759f
repository: fix race condition for blobSaver shutdown
...
wg.Go() may not be called after wg.Wait(). This prevents connecting two
errgroups such that the errors are propagated between them if the child
errgroup dynamically starts goroutines. Instead use just a single errgroup,
and sequence the shutdown using a sync.WaitGroup. This is far simpler
and does not require any "clever" tricks.
2025-11-26 21:18:22 +01:00
Michael Eischer
9f87e9096a
repository: add tests for SaveBlobAsync
2025-11-26 21:18:22 +01:00
Michael Eischer
d8dcd6d115
archiver: add buffer test
2025-11-26 21:18:22 +01:00
Michael Eischer
3f92987974
archiver: assert number of uploaded chunks in fileSaver test
2025-11-26 21:18:22 +01:00
Michael Eischer
7f6fdcc52c
archiver: convert buffer pool to use sync.Pool
2025-11-26 21:18:22 +01:00
Michael Eischer
dd6cb0dd8e
archiver: port to repository.SaveBlobAsync
2025-11-26 21:18:22 +01:00
Michael Eischer
046b0e711d
repository: add SaveBlobAsync method
2025-11-26 21:18:21 +01:00
Michael Eischer
4d2da63829
Merge pull request #5610 from MichaelEischer/associated-blob-set-everywhere
...
check/copy/diff/stats: reduce memory usage
2025-11-26 21:09:26 +01:00
Michael Eischer
134893bd35
copy: use AssociatedBlobSet to keep track of processed trees
2025-11-26 21:00:18 +01:00
Michael Eischer
7b59dd7cf4
add changelog
2025-11-26 20:59:39 +01:00
Michael Eischer
84dda4dc74
check: use AssociatedBlobSet
2025-11-26 20:59:39 +01:00
Michael Eischer
46ebee948f
stats: use AssociatedBlobSet
2025-11-26 20:59:39 +01:00
Michael Eischer
d91fe1d7e1
diff: use AssociatedBlobSet
2025-11-26 20:59:39 +01:00
Michael Eischer
ff099a216a
copy: use AssociatedBlobSet
2025-11-26 20:59:38 +01:00
Michael Eischer
07d090f233
repository: expose AssociatedBlobSet via repository interface
2025-11-26 20:59:08 +01:00
Michael Eischer
0f05277b47
index: add sub and intersect method to AssociatedSet
2025-11-26 20:59:08 +01:00
Michael Eischer
7e80536a9b
Merge pull request #5472 from wplapper/cmd_copy_stream
...
restic copy --stream: run one large copy operation crossing snapshot boundaries - issue #5453
2025-11-26 20:57:46 +01:00
Michael Eischer
f9e5660e75
output which source and target snapshot belong together
2025-11-23 22:01:53 +01:00
Michael Eischer
e79b01d82f
more aggressive batching
2025-11-23 21:46:03 +01:00