Issues with "multiple backup destinations" feature

I went ahead and tested the current beta release Release v2.2.1.0_beta_2026-03-05 · duplicati/duplicati · GitHub which added support for multiple backup destinations.

In the past I solved the lack of this feature on my own using rclone after the backup, which worked very well. However, I like it better if the whole functionality is handled in one tool. So I added a second destination to my already existing backup jobs:

  • Job 1: first remote: Box.com, second remote: pcloud
  • Job 2: first remote: onedrive, second remote: pcloud

Unfortunately I have several issues with this feature:

  1. The progress bar in both old and new UI always say “Backup completed” and shows 100 percent progress, even when there are still files being uploaded to the second remote. This is especially confusing when adding the second remote to an existing backup. It shows completed for hours and it seems nothing is happening.
  2. I get errors for every single file that is copied, but the files are copied anyways (at least they exist at pcloud). For this I also opened a bug report: Error "Cannot access a closed file" when using multiple destinations · Issue #6806 · duplicati/duplicati · GitHub
  3. I get an E-Mail with all the errors and I get a “warning” notification in the Duplicati UI saying: “Error while running Job 1”. But if I click on “Show Log” it shows me the log but with “Errors 0”, which makes no sense, because as mentioned earlier I actually get errors for every single file.

To 3:

This is the log which is displayed in the UI:

 {
  "DeletedFiles": 2,
  "DeletedFolders": 0,
  "ModifiedFiles": 3,
  "ExaminedFiles": 22190,
  "OpenedFiles": 7,
  "AddedFiles": 4,
  "SizeOfModifiedFiles": 27295827,
  "SizeOfAddedFiles": 50608620,
  "SizeOfExaminedFiles": 30829474029,
  "SizeOfOpenedFiles": 77904447,
  "NotProcessedFiles": 0,
  "AddedFolders": 0,
  "TooLargeFiles": 0,
  "FilesWithError": 0,
  "TimestampChangedFiles": 0,
  "ModifiedFolders": 6,
  "ModifiedSymlinks": 0,
  "AddedSymlinks": 0,
  "DeletedSymlinks": 0,
  "PartialBackup": false,
  "Dryrun": false,
  "MainOperation": "Backup",
  "CompactResults": {
    "DeletedFileCount": 0,
    "DownloadedFileCount": 0,
    "UploadedFileCount": 0,
    "DeletedFileSize": 0,
    "DownloadedFileSize": 0,
    "UploadedFileSize": 0,
    "Dryrun": false,
    "VacuumResults": null,
    "MainOperation": "Compact",
    "ParsedResult": "Success",
    "Interrupted": false,
    "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
    "EndTime": "2026-03-17T15:52:08.7397298Z",
    "BeginTime": "2026-03-17T15:52:06.0287975Z",
    "Duration": "00:00:02.7109323",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null,
    "BackendStatistics": {
      "RemoteCalls": 11,
      "BytesUploaded": 42325527,
      "BytesDownloaded": 54763479,
      "FilesUploaded": 3,
      "FilesDownloaded": 3,
      "FilesDeleted": 3,
      "FoldersCreated": 0,
      "RetryAttempts": 0,
      "UnknownFileSize": 0,
      "UnknownFileCount": 0,
      "KnownFileCount": 1750,
      "KnownFileSize": 42170350430,
      "KnownFilesets": 18,
      "LastBackupDate": "2026-03-17T16:51:17+01:00",
      "BackupListCount": 18,
      "TotalQuotaSpace": 0,
      "FreeQuotaSpace": 0,
      "AssignedQuotaSpace": -1,
      "ReportedQuotaError": false,
      "ReportedQuotaWarning": false,
      "MainOperation": "Backup",
      "ParsedResult": "Success",
      "Interrupted": false,
      "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
      "EndTime": "0001-01-01T00:00:00",
      "BeginTime": "2026-03-17T15:51:17.7818048Z",
      "Duration": "00:00:00",
      "MessagesActualLength": 0,
      "WarningsActualLength": 0,
      "ErrorsActualLength": 0,
      "Messages": null,
      "Warnings": null,
      "Errors": null
    }
  },
  "VacuumResults": null,
  "DeleteResults": {
    "DeletedSetsActualLength": 3,
    "DeletedSets": [
      {
        "Item1": 1,
        "Item2": "2026-03-15T15:37:02+01:00"
      },
      {
        "Item1": 8,
        "Item2": "2026-03-09T04:00:00+01:00"
      },
      {
        "Item1": 7,
        "Item2": "2026-03-10T04:00:00+01:00"
      }
    ],
    "Dryrun": false,
    "MainOperation": "Delete",
    "CompactResults": {
      "DeletedFileCount": 0,
      "DownloadedFileCount": 0,
      "UploadedFileCount": 0,
      "DeletedFileSize": 0,
      "DownloadedFileSize": 0,
      "UploadedFileSize": 0,
      "Dryrun": false,
      "VacuumResults": null,
      "MainOperation": "Compact",
      "ParsedResult": "Success",
      "Interrupted": false,
      "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
      "EndTime": "2026-03-17T15:52:08.7397298Z",
      "BeginTime": "2026-03-17T15:52:06.0287975Z",
      "Duration": "00:00:02.7109323",
      "MessagesActualLength": 0,
      "WarningsActualLength": 0,
      "ErrorsActualLength": 0,
      "Messages": null,
      "Warnings": null,
      "Errors": null,
      "BackendStatistics": {
        "RemoteCalls": 11,
        "BytesUploaded": 42325527,
        "BytesDownloaded": 54763479,
        "FilesUploaded": 3,
        "FilesDownloaded": 3,
        "FilesDeleted": 3,
        "FoldersCreated": 0,
        "RetryAttempts": 0,
        "UnknownFileSize": 0,
        "UnknownFileCount": 0,
        "KnownFileCount": 1750,
        "KnownFileSize": 42170350430,
        "KnownFilesets": 18,
        "LastBackupDate": "2026-03-17T16:51:17+01:00",
        "BackupListCount": 18,
        "TotalQuotaSpace": 0,
        "FreeQuotaSpace": 0,
        "AssignedQuotaSpace": -1,
        "ReportedQuotaError": false,
        "ReportedQuotaWarning": false,
        "MainOperation": "Backup",
        "ParsedResult": "Success",
        "Interrupted": false,
        "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
        "EndTime": "0001-01-01T00:00:00",
        "BeginTime": "2026-03-17T15:51:17.7818048Z",
        "Duration": "00:00:00",
        "MessagesActualLength": 0,
        "WarningsActualLength": 0,
        "ErrorsActualLength": 0,
        "Messages": null,
        "Warnings": null,
        "Errors": null
      }
    },
    "ParsedResult": "Success",
    "Interrupted": false,
    "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
    "EndTime": "2026-03-17T15:52:08.7398654Z",
    "BeginTime": "2026-03-17T15:52:01.7042832Z",
    "Duration": "00:00:07.0355822",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null,
    "BackendStatistics": {
      "RemoteCalls": 11,
      "BytesUploaded": 42325527,
      "BytesDownloaded": 54763479,
      "FilesUploaded": 3,
      "FilesDownloaded": 3,
      "FilesDeleted": 3,
      "FoldersCreated": 0,
      "RetryAttempts": 0,
      "UnknownFileSize": 0,
      "UnknownFileCount": 0,
      "KnownFileCount": 1750,
      "KnownFileSize": 42170350430,
      "KnownFilesets": 18,
      "LastBackupDate": "2026-03-17T16:51:17+01:00",
      "BackupListCount": 18,
      "TotalQuotaSpace": 0,
      "FreeQuotaSpace": 0,
      "AssignedQuotaSpace": -1,
      "ReportedQuotaError": false,
      "ReportedQuotaWarning": false,
      "MainOperation": "Backup",
      "ParsedResult": "Success",
      "Interrupted": false,
      "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
      "EndTime": "0001-01-01T00:00:00",
      "BeginTime": "2026-03-17T15:51:17.7818048Z",
      "Duration": "00:00:00",
      "MessagesActualLength": 0,
      "WarningsActualLength": 0,
      "ErrorsActualLength": 0,
      "Messages": null,
      "Warnings": null,
      "Errors": null
    }
  },
  "RepairResults": null,
  "TestResults": {
    "MainOperation": "Test",
    "VerificationsActualLength": 3,
    "Verifications": [
      {
        "Key": "duplicati-20260317T155117Z.dlist.zip.aes",
        "Value": []
      },
      {
        "Key": "duplicati-i4566667fd61849169fb1573318dcde30.dindex.zip.aes",
        "Value": []
      },
      {
        "Key": "duplicati-bb6a2810402ae496891a3d812dde3f096.dblock.zip.aes",
        "Value": []
      }
    ],
    "ParsedResult": "Success",
    "Interrupted": false,
    "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
    "EndTime": "2026-03-17T15:52:20.020025Z",
    "BeginTime": "2026-03-17T15:52:13.1507325Z",
    "Duration": "00:00:06.8692925",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null,
    "BackendStatistics": {
      "RemoteCalls": 11,
      "BytesUploaded": 42325527,
      "BytesDownloaded": 54763479,
      "FilesUploaded": 3,
      "FilesDownloaded": 3,
      "FilesDeleted": 3,
      "FoldersCreated": 0,
      "RetryAttempts": 0,
      "UnknownFileSize": 0,
      "UnknownFileCount": 0,
      "KnownFileCount": 1750,
      "KnownFileSize": 42170350430,
      "KnownFilesets": 18,
      "LastBackupDate": "2026-03-17T16:51:17+01:00",
      "BackupListCount": 18,
      "TotalQuotaSpace": 0,
      "FreeQuotaSpace": 0,
      "AssignedQuotaSpace": -1,
      "ReportedQuotaError": false,
      "ReportedQuotaWarning": false,
      "MainOperation": "Backup",
      "ParsedResult": "Success",
      "Interrupted": false,
      "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
      "EndTime": "0001-01-01T00:00:00",
      "BeginTime": "2026-03-17T15:51:17.7818048Z",
      "Duration": "00:00:00",
      "MessagesActualLength": 0,
      "WarningsActualLength": 0,
      "ErrorsActualLength": 0,
      "Messages": null,
      "Warnings": null,
      "Errors": null
    }
  },
  "LockResults": null,
  "ParsedResult": "Success",
  "Interrupted": false,
  "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
  "EndTime": "2026-03-17T15:52:20.0565891Z",
  "BeginTime": "2026-03-17T15:51:17.7814611Z",
  "Duration": "00:01:02.2751280",
  "MessagesActualLength": 32,
  "WarningsActualLength": 0,
  "ErrorsActualLength": 0,
  "Messages": [
    "2026-03-17 16:51:17 +01 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started",
    "2026-03-17 16:51:24 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started:  ()",
    "2026-03-17 16:51:31 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed:  (1.71 KiB)",
    "2026-03-17 16:51:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes (38.18 MiB)",
    "2026-03-17 16:51:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes (38.18 MiB)",
    "2026-03-17 16:51:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes (44.79 KiB)",
    "2026-03-17 16:51:59 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes (44.79 KiB)",
    "2026-03-17 16:52:00 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-20260317T155117Z.dlist.zip.aes (2.15 MiB)",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-20260317T155117Z.dlist.zip.aes (2.15 MiB)",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-StartCheck]: Start checking if backups can be removed",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-FramesAndIntervals]: Time frames and intervals pairs: 7.00:00:00 / 1.00:00:00, 28.00:00:00 / 7.00:00:00, 360.00:00:00 / 30.00:00:00",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-BackupList]: Backups to consider: 03/15/2026 15:37:02, 03/15/2026 04:00:00, 03/14/2026 04:00:00, 03/13/2026 04:00:00, 03/12/2026 04:00:00, 03/11/2026 04:00:00, 03/10/2026 04:00:00, 03/09/2026 04:00:00, 03/05/2026 04:00:00, 02/26/2026 04:00:00, 02/19/2026 04:00:00, 01/14/2026 06:00:00, 12/10/2025 06:00:00, 11/05/2025 06:00:00, 10/01/2025 07:00:00, 08/27/2025 07:00:00, 07/23/2025 07:00:00, 06/18/2025 07:00:00, 05/14/2025 07:00:00, 04/09/2025 07:00:00",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-BackupsToDelete]: Backups outside of all time frames and thus getting deleted: ",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-AllBackupsToDelete]: All backups to delete: 03/15/2026 15:37:02, 03/10/2026 04:00:00, 03/09/2026 04:00:00",
    "2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler-DeleteRemoteFileset]: Deleting 3 remote fileset(s) ...",
    "2026-03-17 16:52:04 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Delete - Started: duplicati-20260309T030000Z.dlist.zip.aes (2.14 MiB)",
    "2026-03-17 16:52:04 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Delete - Completed: duplicati-20260309T030000Z.dlist.zip.aes (2.14 MiB)",
    "2026-03-17 16:52:04 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Delete - Started: duplicati-20260310T030000Z.dlist.zip.aes (2.14 MiB)",
    "2026-03-17 16:52:05 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Delete - Completed: duplicati-20260310T030000Z.dlist.zip.aes (2.14 MiB)",
    "2026-03-17 16:52:05 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Delete - Started: duplicati-20260315T143702Z.dlist.zip.aes (2.15 MiB)"
  ],
  "Warnings": [],
  "Errors": [],
  "BackendStatistics": {
    "RemoteCalls": 11,
    "BytesUploaded": 42325527,
    "BytesDownloaded": 54763479,
    "FilesUploaded": 3,
    "FilesDownloaded": 3,
    "FilesDeleted": 3,
    "FoldersCreated": 0,
    "RetryAttempts": 0,
    "UnknownFileSize": 0,
    "UnknownFileCount": 0,
    "KnownFileCount": 1750,
    "KnownFileSize": 42170350430,
    "KnownFilesets": 18,
    "LastBackupDate": "2026-03-17T16:51:17+01:00",
    "BackupListCount": 18,
    "TotalQuotaSpace": 0,
    "FreeQuotaSpace": 0,
    "AssignedQuotaSpace": -1,
    "ReportedQuotaError": false,
    "ReportedQuotaWarning": false,
    "MainOperation": "Backup",
    "ParsedResult": "Success",
    "Interrupted": false,
    "Version": "2.2.1.0 (2.2.1.0_beta_2026-03-05)",
    "EndTime": "0001-01-01T00:00:00",
    "BeginTime": "2026-03-17T15:51:17.7818048Z",
    "Duration": "00:00:00",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null
  }
} 

And this is the email I got after job completion of the same backup job (the apprise warnings can be ignore, was just testing alternative notifications):

DeletedFiles: 2
DeletedFolders: 0
ModifiedFiles: 3
ExaminedFiles: 22190
OpenedFiles: 7
AddedFiles: 4
SizeOfModifiedFiles: 27295827
SizeOfAddedFiles: 50608620
SizeOfExaminedFiles: 30829474029
SizeOfOpenedFiles: 77904447
NotProcessedFiles: 0
AddedFolders: 0
TooLargeFiles: 0
FilesWithError: 0
TimestampChangedFiles: 0
ModifiedFolders: 6
ModifiedSymlinks: 0
AddedSymlinks: 0
DeletedSymlinks: 0
PartialBackup: False
Dryrun: False
MainOperation: Backup
ParsedResult: Error
Interrupted: False
Fatal: False
Version: 2.2.1.0 (2.2.1.0_beta_2026-03-05)
EndTime: 03/17/2026 16:52:20 (1773762740)
BeginTime: 03/17/2026 16:51:17 (1773762677)
Duration: 00:01:02.2751280
MessagesActualLength: 39
WarningsActualLength: 5
ErrorsActualLength: 14
LimitedMessages: [
    2026-03-17 16:51:17 +01 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started,
    2026-03-17 16:51:24 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started:  (),
    2026-03-17 16:51:31 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed:  (1.71 KiB),
    2026-03-17 16:51:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes (38.18 MiB),
    2026-03-17 16:51:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes (38.18 MiB),
    2026-03-17 16:51:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes (44.79 KiB),
    2026-03-17 16:51:59 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes (44.79 KiB),
    2026-03-17 16:52:00 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-20260317T155117Z.dlist.zip.aes (2.15 MiB),
    2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-20260317T155117Z.dlist.zip.aes (2.15 MiB),
    2026-03-17 16:52:01 +01 - [Information-Duplicati.Library.Main.Operation.DeleteHandler:RetentionPolicy-StartCheck]: Start checking if backups can be removed,
...
]
LimitedWarnings: [
    2026-03-17 16:52:42 +01 - [Warning-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Could not copy 3 files.,
    2026-03-17 16:53:32 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 1 of 3 failed for: http://apprise:8000/notify/default
HttpRequestException: Response status code does not indicate success: 400 (Bad Request).,
    2026-03-17 16:53:33 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 2 of 3 failed for: http://apprise:8000/notify/default
InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.,
    2026-03-17 16:53:34 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 3 of 3 failed for: http://apprise:8000/notify/default
InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.,
    2026-03-17 16:53:34 +01 - [Warning-Duplicati.Library.Modules.Builtin.ReportHelper-ReportSubmitError]: Failed to send message: System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.

InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.
]
LimitedErrors: [
    2026-03-17 16:52:28 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:52:41 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:52:42 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:52:49 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:52:58 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:52:59 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:53:06 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:53:15 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:53:16 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
    2026-03-17 16:53:22 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
ObjectDisposedException: Cannot access a closed file.,
...
]
Log data:
2026-03-17 16:52:28 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:52:41 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:52:42 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:52:42 +01 - [Warning-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Could not copy 3 files.
2026-03-17 16:52:49 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:52:58 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:52:59 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:06 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:15 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:16 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:22 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-20260317T155117Z.dlist.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:31 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-b14e90fa314b848389c83e516b80313f7.dblock.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:32 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Error copying duplicati-i00f639fd1b604d70ae11255ddfde3e13.dindex.zip.aes: Cannot access a closed file.
System.ObjectDisposedException: Cannot access a closed file.
   at System.IO.FileStream.set_Position(Int64 value)
   at Duplicati.StreamUtil.WrappingStream.set_Position(Int64 value)
   at RemoteSynchronization.RemoteSynchronizationRunner.CopyAsync(LightWeightBackendManager b_src, LightWeightBackendManager b_dst, IEnumerable`1 files, Config config, CancellationToken token)
2026-03-17 16:53:32 +01 - [Error-RemoteSynchronization.RemoteSynchronizationRunner-rsync]: Could not copy 3 files. Not retrying any more.
2026-03-17 16:53:32 +01 - [Error-Duplicati.Library.Modules.Builtin.RemoteSynchronizationModule-RemoteSyncFailed]: Remote synchronization to RemoteSyncDestinationConfig { Config = Config { Src = , Dst = pcloud://eapi.pcloud.com/Backup?authid=REDACTED, AutoCreateFolders = True, BackendRetries = 3, BackendRetryDelay = 1000, BackendRetryWithExponentialBackoff = True, Confirm = True, DryRun = False, DstOptions = System.Collections.Generic.List`1[System.String], Force = False, GlobalOptions = System.Collections.Generic.List`1[System.String], LogFile = , LogLevel = Information, ParseArgumentsOnly = False, Progress = False, Retention = False, Retry = 3, SrcOptions = System.Collections.Generic.List`1[System.String], VerifyContents = False, VerifyGetAfterPut = False }, Mode = Inline, Interval = , Count =  } failed with exit code 3.
2026-03-17 16:53:32 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 1 of 3 failed for: http://apprise:8000/notify/default
System.Net.Http.HttpRequestException: Response status code does not indicate success: 400 (Bad Request).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.<>c__DisplayClass62_0.<<SendMessage>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.<>c__DisplayClass2_0.<<Retry>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.Retry[T](Func`1 action, Action`2 errorCallback, Int32 maxRetries, TimeSpan delay, CancellationToken token)
2026-03-17 16:53:33 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 2 of 3 failed for: http://apprise:8000/notify/default
System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.
   at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.<>c__DisplayClass62_0.<<SendMessage>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.<>c__DisplayClass2_0.<<Retry>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.Retry[T](Func`1 action, Action`2 errorCallback, Int32 maxRetries, TimeSpan delay, CancellationToken token)
2026-03-17 16:53:34 +01 - [Warning-Duplicati.Library.Modules.Builtin.SendHttpMessage-HttpResponseError]: HTTP Response request attempt 3 of 3 failed for: http://apprise:8000/notify/default
System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.
   at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.<>c__DisplayClass62_0.<<SendMessage>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.<>c__DisplayClass2_0.<<Retry>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.Retry[T](Func`1 action, Action`2 errorCallback, Int32 maxRetries, TimeSpan delay, CancellationToken token)
2026-03-17 16:53:34 +01 - [Warning-Duplicati.Library.Modules.Builtin.ReportHelper-ReportSubmitError]: Failed to send message: System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.

System.InvalidOperationException: The request message was already sent. Cannot send the same request message multiple times.
   at System.Net.Http.HttpClient.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.<>c__DisplayClass62_0.<<SendMessage>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.<>c__DisplayClass2_0.<<Retry>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Duplicati.Library.Utility.RetryHelper.Retry[T](Func`1 action, Action`2 errorCallback, Int32 maxRetries, TimeSpan delay, CancellationToken token)
   at Duplicati.Library.Utility.RetryHelper.Retry(Func`1 action, Action`2 errorCallback, Int32 maxRetries, TimeSpan delay, CancellationToken token)
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.SendMessage(HttpClient client, SendRequestType target, String subject, String body)
   at Duplicati.Library.Utility.Utility.Await[T](Task`1 task)
   at Duplicati.Library.Modules.Builtin.SendHttpMessage.SendMessage(String subject, String body)
   at Duplicati.Library.Modules.Builtin.ReportHelper.OnFinish(IBasicResults result, Exception exception)

As a side note: After copying the email I just realized that the pcloud auth string is included in there. In my opinion auth strings should not included in cleartext emails, but I’m not sure if this is intended. I’m talking about this line (the “REDACTED” was added by me) :

2026-03-17 16:53:32 +01 - [Error-Duplicati.Library.Modules.Builtin.RemoteSynchronizationModule-RemoteSyncFailed]: Remote synchronization to RemoteSyncDestinationConfig { Config = Config { Src = , Dst = pcloud://eapi.pcloud.com/Backup?authid=REDACTED, AutoCreateFolders = True, BackendRetries = 3, BackendRetryDelay = 1000, BackendRetryWithExponentialBackoff = True, Confirm = True, DryRun = False, DstOptions = System.Collections.Generic.List1[System.String], Force = False, GlobalOptions = System.Collections.Generic.List1[System.String], LogFile = , LogLevel = Information, ParseArgumentsOnly = False, Progress = False, Retention = False, Retry = 3, SrcOptions = System.Collections.Generic.List`1[System.String], VerifyContents = False, VerifyGetAfterPut = False }, Mode = Inline, Interval = , Count = } failed with exit code 3.

Has anybody else tested this feature and has the same issues?

Hi @TSP !

Thank you for reporting the problems! I’ve looked at your issues:

  1. I can see how that’s confusing. There is one problem in that the remote synchronization is disconnected from the main Duplicati library, which makes integration with certain parts (and in this case, the progress tracker) quite tricky. I have a few ideas on how to handle this, but we’re still working on a “final” solution.
  2. Right, I’ve located the fault: some backends close the file that they’re uploading after upload, which meant that the hash computation that was done concurrently to uploading, but wasn’t awaited until after the upload, at which point the file had been closed. The concurrency was incorrect, and I have instead moved the hash computation to be performed prior to uploading. This fixed the problems on my test backup against pcloud at least.
  3. This is the same problem as described in 1, where because the results are part of the core Duplicati and that remote synchronization is not, the results cannot be modified directly. As with 1, we’re working on a solution for that.

To your side note: you’re correct, that shouldn’t have been leaked in the log, which then led to it leaking to the email. I’ve fixed that by stripping credentials from the URLs prior to logging by using Duplicati.Library.Utility.Utility.GetUrlWithoutCredentials().

I’ve made a pull request for fixing these issues. I’ll also post the problem and solution to the issue on Github for completeness.

I’m also in the process of writing up a blog post to describe the new multiple destinations / remote synchronization tool more in detail, which should hopefully provide some more insight.

Thanks for the reply and the fast fix. Much appreciated.

I have one question left: Since the hashing was not performed correctly/completely I guess it’s better to fully remove the backup from the 2nd remote and then try again with the fixed version and a “fresh” 2nd remote, right? I’m asking, because the files were actually uploaded, but now I’m not sure about their integrity.