Commit Graph
809 Commits
Author SHA1 Message Date
Kenneth SkovhedeandGitHub 9b3328daef Merge pull request #6210 from duplicati/feature/improve-backup-listing-speed
Improve backup listing speed for restore
2025-04-30 12:47:13 +02:00
Kenneth Skovhede 39dca1eb79 Improve list-broken-files output
This hand-picks the changes from #5049 by @gpatel-fr.

The change is to use a left-join to include all broken files, even if there are no entries in the Blockset table.

The update is only visual but makes the results consistent with the actual operation performed by purge-broken-files.

This close #5049
2025-04-30 09:22:24 +02:00
Kenneth Skovhede a3bc9b80ca Implemented 4 new list methods that are optimized for a single operation 2025-04-29 10:03:57 +02:00
Kenneth Skovhede 32f44a1ea7 Fixed issues with compile after merges 2025-04-25 17:21:39 +02:00
Kenneth SkovhedeandGitHub af9465d8e3 Merge pull request #6187 from duplicati/feature/fix-throttle-speeds
Fixed throttle support
2025-04-25 15:36:44 +02:00
Kenneth Skovhede 0d413737b9 Set defaults for downgrade version to match 2.1.0.5 stable 2025-04-25 13:44:57 +02:00
Kenneth Skovhede ba298df915 Added an upgrade command to the database tool 2025-04-25 12:30:03 +02:00
Kenneth Skovhede 1eb95c046f Added option to scan for databases that are not connected to CLI or server database. 2025-04-25 11:13:50 +02:00
Kenneth Skovhede c8f8fb1a37 Less cryptic script comment 2025-04-24 16:42:57 +02:00
Kenneth Skovhede a0ecc5e05d Added a database downgrade tool 2025-04-24 16:36:14 +02:00
Kenneth Skovhede f393c00030 Fixed throttle support
This moves the throttle support to the StreamUtil throttled stream, which allows multiple streams to share a throttle value, such that the throttle setting is applied to the entire communication from Duplicati, and not for each connection.

This also cleans up a bit in the progress reporting, where the backend manager now keeps track of the "active" transfer and only emits progress on that. Once it finishes, a new transfer is promoted a "active".
2025-04-22 22:54:48 +02:00
Kenneth Skovhede e392658e35 Fixed multiple retention settings in delete.
The delete call would select the same fileset multiple times if multiple retention options were present.

This fixes the selection to a distinct set.
This fixes #6127
2025-04-15 12:13:47 +02:00
marceloduplicatiandGitHub 4d560af9c9 Merge pull request #6121 from marceloduplicati/feature/refactor-permission-set
Refactoring of how permissions are set whilst obtaining DataFolder
2025-04-03 10:16:27 -03:00
Marcelo C. bf22d7e178 Changed parameter from boolean to Enum for clarity of purpose 2025-04-02 10:15:21 -03:00
Marcelo C. 2da12c12bb Refactoring of how permissions are set whilst obtaining DataFolder
This addresses [Issue](https://github.com/duplicati/duplicati/issues/6114).

Whenever in non-write context, the permissions of the folder are not set.

Changing pattern from static constructor execution.
2025-04-01 15:21:40 -03:00
Kenneth SkovhedeandGitHub a7bdd67534 Merge pull request #6106 from duplicati/feature/remove-timeout-excempt-backend
Removed unused timeout excemption
2025-04-01 15:39:43 +02:00
Kenneth Skovhede f28e18f963 Added file index to output 2025-03-31 11:27:23 +02:00
Kenneth Skovhede bff02541d8 Removed use of positional arguments in format strings 2025-03-31 11:23:29 +02:00
Marcelo C. d15e398e81 Added machine-readable output for serverutil commands
This comes from suggestion on issue https://github.com/duplicati/duplicati/issues/6056

The chosen argument was --json which produces a json that wraps the result with extended properties such as in example:

``
{
  "Timestamp": "2025-03-28T15:47:01.3368160-03:00",
  "UnixTimestamp": 1743187621,
  "Command": "import",
  "Success": true,
  "ExitCode": 0,
  "Messages": [
    "Importing backup configuration from ../2-firstbacku.json",
    "Connecting to http://127.0.0.1:8200/...",
    "No database found in../data/",
    "Imported \"firstbackup (5)\" with ID 8"
  ],
  "Exceptions": [],
  "Imported": {
    "Id": "8",
    "Name": "firstbackup (5)"
  }
}
``

The documentation will reflect all commands and schemas as this makes its way into Canary
2025-03-28 16:08:45 -03:00
Kenneth Skovhede 79417ef5a8 Added missing update 2025-03-28 16:58:54 +01:00
Carl Johnsen a4cf24e854 Merge branch 'master' into bugfix/restore-folder-metadata 2025-03-26 12:07:27 +01:00
Kenneth Skovhede 580947a0cc Fixed compile issue for tests 2025-03-25 14:20:26 +01:00
Kenneth Skovhede 54d6492e90 Added timings to deleted files 2025-03-25 14:17:26 +01:00
Carl Johnsen 38411b907a Condensed CLI restore help text 2025-03-25 10:06:38 +01:00
Carl Johnsen c19af329f4 Removed whitespace 2025-03-24 14:00:39 +01:00
Carl Johnsen e9d32acd1a Updated the CLI restore help text 2025-03-24 14:00:12 +01:00
Marcelo C. b035c69e4d Integrating the IPv6 & IPv4 detection
It should be noted that I was unable to completely remove IPv4 on Windows 11 to a state where it would not provide the 127.0.0.1 loopback, even when disabling Ipv4 in various ways, including with registry flags.

On ubuntu/linux, after completely disabling ipv4 the ipv6 loopback was returned.
2025-03-11 16:24:15 -03:00
Kenneth Skovhede c61cc778a8 Log remote filesets
This commit adds the number of known remote filesets to the log output.
2025-02-28 11:18:23 +01:00
Kenneth Skovhede 11a27042bc Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-26 19:25:46 +01:00
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 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
Kenneth Skovhede 5a4fcaa6d7 Added tool to work with remote sources 2025-02-21 11:51:45 +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 aab91eb0df Added protection to newly create data folder and databases 2025-02-06 16:56:06 +01:00
marceloduplicatiandGitHub 3a604998e2 Merge pull request #5921 from duplicati/feature/backend-tester-improv
Change timeout configuration for BackendTester
2025-02-03 17:44:17 -03:00
Kenneth SkovhedeandGitHub 28e3fa1063 Merge pull request #5914 from duplicati/feature/prevent-windows-subfolder-storage
Improve data folder assignment
2025-01-31 14:52:45 +01:00
marceloduplicatiandGitHub 03b7fac65c Merge pull request #5889 from marceloduplicati/feature/unified-help-arguments
Help Command unification
2025-01-30 10:23:10 -03:00
Marcelo C. 0fca2ba96b Changing default streaming timeout from 10 to 60 seconds 2025-01-29 20:37:40 -03:00
Marcelo C. 36db29dc77 Change timeout configuration for BackendTester
This change will allow an environment variable READ_WRITE_TIMEOUT_SECONDS to control the read write timeout used during the tests on streaming backends.

-1 will set it to infinite.

Additionally all console logs during test execution have a timestamp with millisecond precision to aid in benchmarking.
2025-01-28 10:35:32 -03:00
Kenneth Skovhede fac12ba772 Further consolidated the data folder.
Added support for `--portable-mode` and `--server-datafolder` for the CLI, ServerUtil, and Agent.

Fixed a few places where file reads were not cached properly.

Moved some responsibilities of UpdaterManager into DataFolderManager.

This now supports storing `machineid.txt` and `installation.txt` inside the path pointed to by `--server-datafolder` or alternatively with `--portable-mode`.

It is possible that some fringe backwards compatibility is lost with this update.

Fixed an issue with AutoUpdater crashing on check/download.

This fixes #5902
2025-01-28 13:01:35 +01:00
Kenneth Skovhede 27f0bb4ea0 Unified code to find the data folder.
The `machineid.txt` and `installation.txt` files are now default located in same folder where the database is default located.
2025-01-27 22:51:45 +01:00
Kenneth Skovhede 97d62163c5 Renamed methods for database path to better distinguish what they do 2025-01-27 11:46:24 +01:00
Kenneth SkovhedeandGitHub 997891525a Updated license-updater to update csproj files (#5898)
* Updated license-updater to update csproj files

* License updates
2025-01-22 21:04:19 +01:00
Marcelo C. cee1b8428d Centralizing the check on Helper function. 2025-01-21 12:45:53 -03:00
Marcelo C. 2e502ea7be Help Command unification
All CLI tools and executables now accept a unified set of help command variants:

"help", "/help","--help", "usage", "/usage", "--usage", "/h", "-h"

Affected executables:

Duplicati.Agent
Duplicati.CommandLine
Duplicati.CommandLine.AutoUpdater
Duplicati.CommandLine.BackendTester
Duplicati.CommandLine.BackendTool
Duplicati.CommandLine.ConfigurationImporter
Duplicati.CommandLine.SecretTool
Duplicati.CommandLine.Snapshots
Duplicati.GUI.TrayIcon
Duplicati.Server
Duplicati.Service
Duplicati.WindowsService

Note that SharpAesCrypt command is not included in this because the parameter parsing is part of the SharpAesCrypt code base.
2025-01-17 14:00:14 -03:00
Marcelo C. adc4bfa650 Added timers to backend testing tool
Also changed logic around test result, ensuring it fails when any unexpected behavior happens.
2025-01-17 09:45:49 -03:00
Kenneth SkovhedeandGitHub e9aa8717fc Improve ServerUtil (#5860)
* Improve the ServerUtil

Added `status` command to show server state

* Added support for waiting on a backup after starting it
2025-01-09 14:48:00 +01:00
Kenneth SkovhedeandGitHub 9464caf622 Feature/update license 2025 (#5851)
* Fixed some minor whitespace issues

* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Kenneth SkovhedeandGitHub 447c2b3238 Feature/improve ci testing (#5781)
* Added options to insert delays in backend tester

* Added wait delays to Azure and GoogleDrive to see it the CI is more stable with small delays

* Added more debug output to the backend tester

* Fixed dropbox reporting OAuth quota errors, when it is likely Dropbox API quota errors

* Implemented exception detection on AzureBlob backend

* Also showing sleep times in output

* Fixed a bug with the dropbox quota response

* Fixed error message to report correct number of files

* Fixed suppressed warning
2024-12-20 16:10:08 +01:00
Kenneth SkovhedeandGitHub 86f3f6b178 Fixed issues with timeout in msgraph (#5790)
* Fixed issues with timeout in msgraph

Fixed a place where the cancellation token was not applied.

Fixed a problem with msgraph not sending correct DNS information.

Fixed a problem with msgraph downloading the entire file before streaming it, bypassing throttle and tripping the timeout.

Added `ITimeoutExemptBackend` to selectively disable timeouts for backends that do not support it.

Updated the backendmanager to support `ITimeoutExemptBackend`.

Updated the backendmanager to abort as soon as a timeout happens.

* Updated BackendTester to use the `TimeoutObservingStream` and support the `--read-write-timeout` setting.

Updated backend tester code to use `var`

* Fixed a bug reading the `read-write-timeout`

* Updated to using constants with names instead of `-1`.
2024-12-19 09:31:06 +01:00