Commit Graph
4937 Commits
Author SHA1 Message Date
Kenneth Skovhede 26bbe6a577 Added setup step for source providers.
This enables a fail-early approach, where the remote source loads the initial results.
By storing the `IAsyncEnumerable` it is possible to not perform any additional remote calls, even with the initial probing call.

This makes it possible to detect the absence of sources, so the backup can be aborted if sources are missing.
2025-02-24 12:50:58 +01:00
Kenneth Skovhede 4e73be1806 Fixed path conversion on Windows 2025-02-21 16:25:18 +01:00
Kenneth Skovhede 9dfe977d3f Changed logic so the source providers are now logically mounted into the source directory structure.
This fixes the restore issues as all sources will now appear as if they were originally part of the source file system.

The backend implementation has now been simplified so the backends only return names of entries with no path information.  Most backends already do this, but the S3 backends did not, so this was fixed as well.

This also clears up the interfaces, so the backend does not know about the `ISourceProviderEntry`. All mapping is done by the `BackendSourceProvider`, making it simpler to support other backends as sources.
2025-02-21 16:06:55 +01:00
Carl-Johannes JohnsenandGitHub 5aa06f3cd4 Merge pull request #5983 from carljohnsen/performance/restore-parallel-download
Performance/restore parallel download
2025-02-21 14:29:54 +01:00
Kenneth Skovhede cd512ea7dd Changed remote path prefix to > to avoid clash with literal string prefix @ 2025-02-21 13:25:00 +01:00
Kenneth Skovhede 1716d09b51 Fixed source providers for S3, CIFS, and SSH.
Made the SMBShareConnection slightly more robust.

Introduced v2 List API to S3 backend, currently it retains v1 as the default.

Changed S3 backends to not recurse, potentially making smaller listings. This option can be disabled if it breaks things.

Added support for relative paths in the SSH backend.
2025-02-21 13:20:52 +01:00
Kenneth Skovhede 5a4fcaa6d7 Added tool to work with remote sources 2025-02-21 11:51:45 +01:00
Carl Johnsen 98e572714d Added a comment about downloaders in the teardown of BackendManager.Handler 2025-02-21 10:08:21 +01:00
Carl Johnsen 7612b5cce3 Ensured proper synchronization of operations in BackendManager.Handler 2025-02-21 10:07:41 +01:00
Carl Johnsen c164181ec2 BackendManager.GetOperation's were unintentionally still synchronized. 2025-02-21 10:07:09 +01:00
Kenneth Skovhede 80d60c0982 Fix Uri ToString()
Fixed a case where an extra leading slash would be removed when converting a parsed Uri back to a string.
2025-02-19 22:23:53 +01:00
Carl Johnsen beefbf2a46 Removed some unused variables from the BackendManager 2025-02-19 16:12:58 +01:00
Carl Johnsen 9919d86e9b Updated VolumeDownloader to use the new BackendManager.GetDirectAsync() method 2025-02-19 16:12:42 +01:00
Carl Johnsen 374741fc6d Added BackendManager.GetDirectAsync(), which downloads a file without decrypting it 2025-02-19 16:11:55 +01:00
Kenneth Skovhede a9f328ae95 Add back missing Windows example script.
This adds back the missing `run-script-example.bat`.

It also makes the output conditional, so the Windows builds get the `.bat` and others get the `.sh` version.
2025-02-19 16:11:37 +01:00
Carl Johnsen 2c06820281 Made the BackendManager.GetOperations' decryption methods static and public so the restores VolumeDecryptor can use the same code. 2025-02-19 16:09:32 +01:00
Carl Johnsen e2e930b2d7 Reworked BackendManager.Handler to handle multiple downloads in parallel 2025-02-19 15:55:59 +01:00
Carl Johnsen 864ce59c4a Reworded pending uploads to active to better reflect that the uploads are in progress 2025-02-19 15:55:13 +01:00
Kenneth Skovhede b1488dae0c Switched to vssadmin for listing VSS enabled drives 2025-02-19 15:48:00 +01:00
Kenneth Skovhede bf80845292 Fixed a rare startup error 2025-02-19 15:46:22 +01:00
Kenneth Skovhede 36ba547a92 Added the @ prefix to backend paths 2025-02-19 14:20:03 +01:00
Kenneth Skovhede cf5b4bb24d Added support for Wmic based Windows VSS snapshots.
Refactored code a bit to be easier to understand.
2025-02-19 14:00:14 +01:00
Kenneth Skovhede ac603a4d8f Renamed SourceFolders to SourceEntries as it can contain files as well 2025-02-18 22:32:37 +01:00
Kenneth Skovhede 73d0ad905f Fixed USN support 2025-02-18 22:12:37 +01:00
Kenneth Skovhede 12d0c9710d Added additional fix for VSS 2025-02-18 17:17:16 +01:00
Kenneth Skovhede f61a1d0ad8 Fixed Windows VSS support 2025-02-18 15:13:46 +01:00
Carl Johnsen a0d5096ebc Reworked the "Volume loop" of the restore network to handle Backends themselves, rather than using the BackendManager.
This allows for tighter control over which process performs which action, allowing them more easily to run in parallel.
2025-02-18 09:25:20 +01:00
Carl Johnsen 17e2c0b9cf Added ConfigureAwait(false) 2025-02-18 09:20:28 +01:00
Carl Johnsen ce60b807c8 Added additional profiling logging 2025-02-18 09:18:46 +01:00
Kenneth Skovhede 7031bc57b6 Adding ConfigureAwait(false) to all async enumerations 2025-02-18 09:18:36 +01:00
Kenneth Skovhede 3337e6a3cc Fixed review comment 2025-02-18 09:18:09 +01:00
Carl Johnsen 93756cd74b Whitespace fixes 2025-02-18 09:17:08 +01:00
Carl Johnsen 6600e418a7 Fixed a bug during profile logging 2025-02-18 09:14:17 +01:00
Carl Johnsen 9f3f15615d Exposed spawning multiple backends from the BackendManager 2025-02-18 09:10:13 +01:00
Kenneth Skovhede a99aa87dbb Fixed issue with Windows paths being stored in extended format 2025-02-17 19:51:26 +01: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 Skovhede 0e8df7ccd8 Removed unsupported code 2025-02-17 14:05:21 +01:00
Kenneth Skovhede bb5fd80a29 Implemented support for some backends as sources: SSH, CIFS, and S3 2025-02-17 14:01:08 +01:00
Kenneth Skovhede 989ba60211 Updated license copyright years 2025-02-17 08:52:01 +01:00
Kenneth Skovhede a621bb3d14 Fixed issue after merge 2025-02-17 08:19:19 +01:00
Kenneth Skovhede 6bbc93b8df Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-16 16:37:12 +01:00
Kenneth Skovhede 356d117b86 Ensure directory paths end with a separator 2025-02-16 16:08:28 +01:00
Kenneth Skovhede 9501470d0d Added listen interface to startup message 2025-02-14 11:28:22 +01:00
Kenneth Skovhede 439d10b53d Improve shell-script arguments 2025-02-12 09:23:07 +01:00
marceloduplicatiandGitHub 820c0d61cc Merge pull request #5963 from marceloduplicati/feature/backblaze-429-observance
Adding 429 observance to backend
2025-02-11 14:02:15 -03:00
Kenneth SkovhedeandGitHub 4d80fb7320 Merge pull request #5959 from duplicati/feature/sync-tool-executable
Made the synctool an executable
2025-02-11 09:27:09 +01:00
Kenneth SkovhedeandGitHub 5b66d06370 Merge pull request #5961 from duplicati/feature/do-not-escape-http-form-parameters
Do not encode http form extra parameters.
2025-02-11 09:26:07 +01:00
Kenneth Skovhede 0260a061bb Made the synctool an executable 2025-02-10 21:37:52 +01:00
Kenneth SkovhedeandGitHub e1c121d09f Merge pull request #5951 from duplicati/feature/deprecate-mega-backend
Added warning when using the Mega backend
2025-02-10 21:07:39 +01:00
Kenneth SkovhedeandGitHub d4e659ce0d Merge pull request #5954 from duplicati/feature/improve-trayicon
Improved TrayIcon detached.
2025-02-10 21:07:00 +01:00