Commit Graph
6 Commits
Author SHA1 Message Date
Kenneth SkovhedeandGitHub 3e0aedd8b6 Merge branch 'master' into feature/fix-issue-6539 2026-01-28 15:44:28 +01:00
Kenneth Skovhede 90a56ff33e Fix issue with failed delete
If the delete call fails, the file will be marked as "deleted" in the database even though it may not actually be deleted.

Once the delete grace time expires, Duplicati will refuse to run backups as a "new" file is found in the destination folder.

This PR changes the logic to track if the file was actually deleted, and will not mark the file deleted until the delete call reports success.

This fixes #6539
2026-01-28 15:03:23 +01:00
Kenneth Skovhede 8996955dc1 Added a soft-delete feature
This PR adds an option to give a soft-delete prefix. If the prefix is set, files are renamed instead of actually being deleted. For backends that support life-cycle rules, this can be used to provide protection agains accidental deletion.

The intended use is that the client credentials do not have permissions to delete files, but can rename files. When a file is soft-deleted, it is then renamed and no longer "visible" to Duplicati. The destination can then have lifecycle rules that deletes files with the designated prefix after a set interval, or by another service that has permissions to actually delete files.
2026-01-27 14:10:31 +01:00
Kenneth Skovhede 14741a3b43 Removed some checks for WebException that is no longer used.
Changed throwing WebException to throwing HttpRequestException
2025-05-23 14:02:03 +02:00
Kenneth Skovhede 0f9669b273 Final conversion to async backends
This PR is the final change, where all backends are now purely implemented with async interfaces.

The code changes here replace the LIST call with an async version. This affect all backends (and then some) but the changes are mostly mechanical rewrites of the code.

In many places, the backeds were already prepared for async output, in other some glue was needed.

To reduce the scope of this change, some backends simply report a synchronous result as an async list.
2025-02-17 16:45:51 +01:00
Kenneth SkovhedeandGitHub d99f74ed94 Rewrite the backend manager. (#5896)
* Rewrite the backend manager.

This creates a new more logic backend manager that handles all backend operations.

For each top-level operation, there is now a single backend manager instance that is passed to sub-commands.

The internals of the backend manager are now rewritten to use async logic instead of threading.

The design uses a single task runner that dispatches operations and honors concurrent settings and limits from one place.

The logic for each operation has been moved into a separate files/classes to make it easier to understand each operation.

This fixes #5804

* Fixed a few issues with not awaiting tasks

* Fixed not creating empty databases

* Fixed an issue with hashes not being recorded on download

* Reworked the download logic to avoid attempting to decrypt the file if it has been modified.

* Review fixes

* Renamed db collector to better reflect the purpose.

* Review fixes
2025-01-28 08:54:50 +01:00