Backup always failed

Hi,

i’ve setup duplicati in a Docker conteiner and try to create a backup on a remote FTP Server.
Duplicati can connect to the server and even creates files there, but at the end the backup is never sucessful and finish with errors.
If tryed several configurations for the container as well for the way how to connect to FTP-Server, but i never found a way to make it work.

From the attached log file and the error messages i can’t get any idea what could be wrong:

        {

“DeletedFiles”: 0,
“DeletedFolders”: 0,
“ModifiedFiles”: 0,
“ExaminedFiles”: 20,
“OpenedFiles”: 20,
“AddedFiles”: 20,
“SizeOfModifiedFiles”: 0,
“SizeOfAddedFiles”: 5768819,
“SizeOfExaminedFiles”: 5768819,
“SizeOfOpenedFiles”: 5768819,
“NotProcessedFiles”: 0,
“AddedFolders”: 1,
“TooLargeFiles”: 0,
“FilesWithError”: 0,
“ModifiedFolders”: 0,
“ModifiedSymlinks”: 0,
“AddedSymlinks”: 0,
“DeletedSymlinks”: 0,
“PartialBackup”: false,
“Dryrun”: false,
“MainOperation”: “Backup”,
“CompactResults”: null,
“VacuumResults”: null,
“DeleteResults”: null,
“RepairResults”: null,
“TestResults”: null,
“ParsedResult”: “Fatal”,
“Interrupted”: false,
“Version”: “2.1.0.4 (2.1.0.4_stable_2025-01-31)”,
“EndTime”: “2025-02-16T13:27:19.438753Z”,
“BeginTime”: “2025-02-16T13:25:15.7607284Z”,
“Duration”: “00:02:03.6780246”,
“MessagesActualLength”: 30,
“WarningsActualLength”: 0,
“ErrorsActualLength”: 2,
“Messages”: [
“2025-02-16 14:25:15 +01 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started”,
“2025-02-16 14:25:16 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started: ()”,
“2025-02-16 14:25:16 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed: (1 bytes)”,
“2025-02-16 14:25:17 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b7cb6f50e86a34cf2aafd6e573e411246.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:19 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b7cb6f50e86a34cf2aafd6e573e411246.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-b7cb6f50e86a34cf2aafd6e573e411246.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:29 +01 - [Information-Duplicati.Library.Main.Operation.Backup.BackendUploader-RenameRemoteTargetFile]: Renaming "duplicati-b7cb6f50e86a34cf2aafd6e573e411246.dblock.zip" to "duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip"”,
“2025-02-16 14:25:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:31 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:56 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:56 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:56 +01 - [Information-Duplicati.Library.Main.Operation.Backup.BackendUploader-RenameRemoteTargetFile]: Renaming "duplicati-bf4e1ab2b1558470598c17981e8c38764.dblock.zip" to "duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip"”,
“2025-02-16 14:25:56 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip (3.777 MB)”,
“2025-02-16 14:25:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip (3.777 MB)”,
“2025-02-16 14:26:08 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip (3.777 MB)”,
“2025-02-16 14:26:08 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-b57720a6422594c899eece0561e96d607.dblock.zip (3.777 MB)”,
“2025-02-16 14:26:08 +01 - [Information-Duplicati.Library.Main.Operation.Backup.BackendUploader-RenameRemoteTargetFile]: Renaming "duplicati-b985dcb6ebcd64494851cb89d171fd9a5.dblock.zip" to "duplicati-b57720a6422594c899eece0561e96d607.dblock.zip"”,
“2025-02-16 14:26:08 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b57720a6422594c899eece0561e96d607.dblock.zip (3.777 MB)”,
“2025-02-16 14:26:10 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b57720a6422594c899eece0561e96d607.dblock.zip (3.777 MB)”
],
“Warnings”: ,
“Errors”: [
“2025-02-16 14:27:19 +01 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error\nUserInformationException: Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed”,
“2025-02-16 14:27:19 +01 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Backup has failed with error: One or more errors occurred. (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed)))\nAggregateException: One or more errors occurred. (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-b7bd3d5d81d0948f38473cd7373196c02.dblock.zip, error: Status is Failed)))”
],
“BackendStatistics”: {
“RemoteCalls”: 7,
“BytesUploaded”: 0,
“BytesDownloaded”: 0,
“FilesUploaded”: 0,
“FilesDownloaded”: 0,
“FilesDeleted”: 0,
“FoldersCreated”: 0,
“RetryAttempts”: 5,
“UnknownFileSize”: 0,
“UnknownFileCount”: 1,
“KnownFileCount”: 0,
“KnownFileSize”: 0,
“LastBackupDate”: “0001-01-01T00:00:00”,
“BackupListCount”: 0,
“TotalQuotaSpace”: 0,
“FreeQuotaSpace”: 0,
“AssignedQuotaSpace”: -1,
“ReportedQuotaError”: false,
“ReportedQuotaWarning”: false,
“MainOperation”: “Backup”,
“ParsedResult”: “Success”,
“Interrupted”: false,
“Version”: “2.1.0.4 (2.1.0.4_stable_2025-01-31)”,
“EndTime”: “0001-01-01T00:00:00”,
“BeginTime”: “2025-02-16T13:25:15.7607304Z”,
“Duration”: “00:00:00”,
“MessagesActualLength”: 0,
“WarningsActualLength”: 0,
“ErrorsActualLength”: 0,
“Messages”: null,
“Warnings”: null,
“Errors”: null
}
}

Any help welcome!

Welcome to the forum @HuLi

This could use more error detail. Try About → Show log → Stored. Expand any relevant errors. Another option is About → Show log → Live → Warning during any backup where uploads fail.

FTP also has some debugging options. Not well explained, but if above don’t help, maybe use:

  --ftp-log-to-console = false
    Use this option to log FTP dialog to terminal console for debugging purposes.
  --ftp-log-privateinfo-to-console = false
    Use this option to log FTP PRIVATE info (username, password) to console for debugging purposes (DO NOT POST THIS TO THE INTERNET!)
  --ftp-log-diagnostics = false
    Use this option to log diagnostics information to the log output. This can be useful for debugging purposes.

Your first Put failed in 2 seconds (for a small file), so it’s probably not the recent timeout issue.

Any logs there to see?

EDIT:

Debugging commands describes some of those FTP options.

Another avenue would be Export As Command-line to get the target URL, then test that with BackendTool which is probably in Docker (but location will vary depend on whose image it is).

You might want to edit target URL to be a test folder. That will also let BackendTester run test.

This is the log from the about screen.

What could be the cause of the wrting error?
As i said in my first post, there are actually files written at the FTP server, but it seems this files are corrupt. I tried to open a non encrypted zip without sucess.

System.AggregateException: One or more errors occurred. (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed)))
—> System.AggregateException: Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed))
—> Duplicati.Library.Interface.UserInformationException: Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed
at CoCoL.AutomationExtensions.RunTask[T](T channels, Func2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.BackupHandler.FlushBackend(BackupResults result, IWriteChannel1 uploadtarget, Task uploader)
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
— End of inner exception stack trace —
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
—> (Inner Exception #1) System.AggregateException: One or more errors occurred. (Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed)
—> Duplicati.Library.Interface.UserInformationException: Error writing file: duplicati-bb4985afd837e4319991c65c4889cbc57.dblock.zip, error: Status is Failed
at CoCoL.AutomationExtensions.RunTask[T](T channels, Func2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.BackupHandler.FlushBackend(BackupResults result, IWriteChannel1 uploadtarget, Task uploader)
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
— End of inner exception stack trace —<—

— End of inner exception stack trace —
at CoCoL.ChannelExtensions.WaitForTaskOrThrow(Task task)
at Duplicati.Library.Main.Operation.BackupHandler.Run(String sources, IFilter filter, CancellationToken token)
at Duplicati.Library.Main.Controller.<>c__DisplayClass17_0.b__0(BackupResults result)
at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Action`1 method)
at Duplicati.Library.Main.Controller.Backup(String inputsources, IFilter filter)
at Duplicati.Server.Runner.Run(IRunnerData data, Boolean fromQueue)

I’ll the FTP-debug options as well, maybe i can provide more information later.

Thanks.

You posted at least one name. Is that one present?

Anything odd about file sizes, e.g. are they empty? Can you post some actual file size?

New log doesn’t really add anything beyond original log, so need more or the CLI tests.

i’ve simply tried to backup a folder with 20 small pdf’s (~200KB), at my FTP server i find 6 ZIP-Files about 4.7MB of size with the name as shown in the log.
e.g. duplicati-bf8b5e0f767f744eabb060385464d5db7.dblock.zip

But i can’t open those zip because it states that the file is invalid.

None of those are the file that failed (log post), so maybe that one didn’t even get started.

Is that one backup? The file times are close together, but that’s too much data for source.

There should be upload retries after failure. File’s name should change, but size shouldn’t.

Possibly those are retries except each one was truncated differently. A log can show more:

About → Show log → Live → Retry or log-file=<path> and log-file-log-level=retry

To make logs easier to follow, asynchronous-concurrent-upload-limit=1 would be good.

As a wild guess, if you are using FTP encryption (a great idea if using Internet), TLSv3 has sometimes caused troubles. You might be able to avoid with allowed-ssl-versions=Tls12

i’ve tried it again with
asynchronous-concurrent-upload-limit=1 and
allowed-ssl-versions=Tls12 ans also
number-of-retries=0.
But nothing changed.
I also tried to ftp-log-to-console but i didn’t display anything there.

This is the last log, i think nothing new there:
System.AggregateException: One or more errors occurred. (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed)))
—> System.AggregateException: Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed) (One or more errors occurred. (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed))
—> Duplicati.Library.Interface.UserInformationException: Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed
at Duplicati.Library.Backend.FTP.PutAsync(String remotename, Stream input, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoPut(FileEntryItem item, IBackend backend, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.<>c__DisplayClass20_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoWithRetry(Func1 method, FileEntryItem item, Worker worker, CancellationToken cancelToken) at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoWithRetry(Func1 method, FileEntryItem item, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.UploadFileAsync(FileEntryItem item, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.UploadBlockAndIndexAsync(VolumeUploadRequest upload, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.b__13_0(<>f__AnonymousType21 self) at Duplicati.Library.Main.Operation.Backup.BackendUploader.<Run>b__13_0(<>f__AnonymousType21 self)
at CoCoL.AutomationExtensions.RunTask[T](T channels, Func2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.BackupHandler.FlushBackend(BackupResults result, IWriteChannel1 uploadtarget, Task uploader)
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
— End of inner exception stack trace —
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
—> (Inner Exception #1) System.AggregateException: One or more errors occurred. (Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed)
—> Duplicati.Library.Interface.UserInformationException: Error writing file: duplicati-b5fd8b0bb98964e8ea4218204b7fbc474.dblock.zip, error: Status is Failed
at Duplicati.Library.Backend.FTP.PutAsync(String remotename, Stream input, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoPut(FileEntryItem item, IBackend backend, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.<>c__DisplayClass20_0.<b__0>d.MoveNext()
— End of stack trace from previous location —
at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoWithRetry(Func1 method, FileEntryItem item, Worker worker, CancellationToken cancelToken) at Duplicati.Library.Main.Operation.Backup.BackendUploader.DoWithRetry(Func1 method, FileEntryItem item, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.UploadFileAsync(FileEntryItem item, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.UploadBlockAndIndexAsync(VolumeUploadRequest upload, Worker worker, CancellationToken cancelToken)
at Duplicati.Library.Main.Operation.Backup.BackendUploader.b__13_0(<>f__AnonymousType21 self) at Duplicati.Library.Main.Operation.Backup.BackendUploader.<Run>b__13_0(<>f__AnonymousType21 self)
at CoCoL.AutomationExtensions.RunTask[T](T channels, Func2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.BackupHandler.FlushBackend(BackupResults result, IWriteChannel1 uploadtarget, Task uploader)
at Duplicati.Library.Main.Operation.BackupHandler.RunAsync(String sources, IFilter filter, CancellationToken token)
— End of inner exception stack trace —<—

— End of inner exception stack trace —
at CoCoL.ChannelExtensions.WaitForTaskOrThrow(Task task)
at Duplicati.Library.Main.Operation.BackupHandler.Run(String sources, IFilter filter, CancellationToken token)
at Duplicati.Library.Main.Controller.<>c__DisplayClass17_0.b__0(BackupResults result)
at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Action`1 method)
at Duplicati.Library.Main.Controller.Backup(String inputsources, IFilter filter)
at Duplicati.Server.Runner.Run(IRunnerData data, Boolean fromQueue)

and this is the file uploaded to the FTP Server.
Screenshot 2025-02-18 212536

What is strange to me is that during the active jog, it displays “0 files left (0 bytes)” while it uploades.

Could it be an file access issue rather than an transfer problem?

That sort of defeats the goal of watching retries to see if it’s repeated retrying the same upload.
You can sort of see intended result in job → Show log → Remote which has file size and hash. Identical hash is probably a retry, and if size is larger than arrived, file probably got truncated…
Since you seem to have had one file show up (but not intact), you can see how sizes compare.

Also no timestamps, and no sense of the error in the total flow. Isn’t the log logging context?

Seems pretty normal. It’s looked through all Source for changes, but now has to upload them.
Was that the end of status line? It gives metrics after uploads run, but maybe it died too soon.

Could be, although this time it did get at least part of the file uploaded, using an unposted time.
Live log only gives round times anyway. The actual log-file would have times to the second.

Sounds strange. These are regular zip files as far as any zip application is concerned.

This looks like something else is being backed up. 200KB should not blow up to a 5MiB file.
Also, the default size of Duplicati files is 50MiB, why are the files only ~5MiB ?

This error message is from the FTP library. It looks like the files are being uploaded, but then the connection is closed during the upload. Most likely this is caused by FTP being a bit quirky and some servers will close the data connection if no messages are sent over the control connection.

There was a fix in the last beta/stable that added an FTP “no-op” daemon that sends dummy messages on the control connection to keep the connection open.

If you can use another connection method (SSH for instance) the problems will likely go away. If not, make sure you are using the latest image for the channel you are on, and optionally see if you can adjust the timeout for closing connections in the FTP server configuration.

thanks for the answers.
It’s definetely a FTP issue, local backups works and I also get the FTP tranfer working with the alternative FTP settings.
Actually i can’t change to different method and with this it’s working fine for me.

I assume you mean that you can change and that it is working? Could you share what setting(s) you had to change?

I mean I can’t switch my transfer method to any other than ftp right now.
but yes it’s working now.
The only thing I changed is the transfer type from FTP to FTP (alternative).

But I have another question.
I have setup a email notification when a job finishes, is it possible to trigger the notification only when warning or error exists?

Hmm, that one only changes the default settings for backwards compatibility. There must be one of the settings that is now having a different default, which works for you.

Yes, then set:

--send-mail-level=Warning,Error

After upgrading to duplicati 2.1.0.4_stable (and/or 2.1.0.110_canary) I have the same problem with FTP server. I have tried with vsftpd and pure-ftpd with different config tuning and no success. Switching to FTP (alternative) helped.

{
  "DeletedFiles": 0,
  "DeletedFolders": 0,
  "ModifiedFiles": 0,
  "ExaminedFiles": 74182,
  "OpenedFiles": 74181,
  "AddedFiles": 74181,
  "SizeOfModifiedFiles": 0,
  "SizeOfAddedFiles": 3320727852,
  "SizeOfExaminedFiles": 3336227268,
  "SizeOfOpenedFiles": 3320727852,
  "NotProcessedFiles": 0,
  "AddedFolders": 0,
  "TooLargeFiles": 0,
  "FilesWithError": 0,
  "TimestampChangedFiles": 0,
  "ModifiedFolders": 0,
  "ModifiedSymlinks": 0,
  "AddedSymlinks": 0,
  "DeletedSymlinks": 0,
  "PartialBackup": false,
  "Dryrun": false,
  "MainOperation": "Backup",
  "CompactResults": null,
  "VacuumResults": null,
  "DeleteResults": null,
  "RepairResults": null,
  "TestResults": null,
  "ParsedResult": "Fatal",
  "Interrupted": false,
  "Version": "2.1.0.110 (2.1.0.110_canary_2025-02-28)",
  "EndTime": "2025-03-04T09:11:06.3040343Z",
  "BeginTime": "2025-03-04T09:08:58.4043159Z",
  "Duration": "00:02:07.8997184",
  "MessagesActualLength": 81,
  "WarningsActualLength": 4,
  "ErrorsActualLength": 2,
  "Messages": [
    "2025-03-04 10:08:58 +01 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started",
    "2025-03-04 10:08:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started:  ()",
    "2025-03-04 10:08:58 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed:  ()",
    "2025-03-04 10:10:17 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes (100.030 MiB)",
    "2025-03-04 10:10:17 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes (99.808 MiB)",
    "2025-03-04 10:10:18 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b735ea943d69247088d9cfd8312c0418c.dblock.zip.aes (99.979 MiB)",
    "2025-03-04 10:10:18 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-b9f1c27032e0e41eb81ab7267493a723d.dblock.zip.aes (99.839 MiB)",
    "2025-03-04 10:10:19 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes ()",
    "2025-03-04 10:10:20 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes ()",
    "2025-03-04 10:10:21 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b9f1c27032e0e41eb81ab7267493a723d.dblock.zip.aes ()",
    "2025-03-04 10:10:21 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-b735ea943d69247088d9cfd8312c0418c.dblock.zip.aes ()",
    "2025-03-04 10:10:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes (100.030 MiB)",
    "2025-03-04 10:10:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes (100.030 MiB)",
    "2025-03-04 10:10:29 +01 - [Information-Duplicati.Library.Main.Backend.PutOperation-RenameRemoteTargetFile]: Renaming \"duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes\" to \"duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes\"",
    "2025-03-04 10:10:29 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes (100.030 MiB)",
    "2025-03-04 10:10:30 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes (99.808 MiB)",
    "2025-03-04 10:10:30 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Rename: duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes (99.808 MiB)",
    "2025-03-04 10:10:30 +01 - [Information-Duplicati.Library.Main.Backend.PutOperation-RenameRemoteTargetFile]: Renaming \"duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes\" to \"duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes\"",
    "2025-03-04 10:10:30 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Retrying: duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes ()",
    "2025-03-04 10:10:30 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes (99.808 MiB)"
  ],
  "Warnings": [
    "2025-03-04 10:11:04 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerHandlerFailure]: Error in handler: Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed\nUserInformationException: Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed",
    "2025-03-04 10:11:04 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeWhileActive]: Terminating 4 active uploads",
    "2025-03-04 10:11:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Error in active upload: One or more errors occurred. (Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed)\nAggregateException: One or more errors occurred. (Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed)",
    "2025-03-04 10:11:06 +01 - [Warning-Duplicati.Library.Main.Backend.DatabaseCollector-FlushingMessagesToLog]: Operation: list File:  Result: [\n\n]\nUpdate: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes State: Uploading Size: 104888941 Hash: NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\nUpdate: duplicati-iee62b15abf5b45f0bd8bf534300b2112.dindex.zip.aes State: Uploading Size: -1 Hash: \nOperation: put File: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes Result: {\"Size\":104888941,\"Hash\":\"NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\"}\nUpdate: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes State: Uploading Size: 104656461 Hash: /Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\nUpdate: duplicati-i35729dc305384cc2b34d3c93772dee32.dindex.zip.aes State: Uploading Size: -1 Hash: \nOperation: put File: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes Result: {\"Size\":104656461,\"Hash\":\"/Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\"}\nUpdate: duplicati-b735ea943d69247088d9cfd8312c0418c.dblock.zip.aes State: Uploading Size: 104835613 Hash: BTU++hnh6BZsw+YCUchKS855xyMciZQc2+rwRG26Lhc=\nUpdate: duplicati-i6e0328adb6ed4bbcbdefff7f99f601b6.dindex.zip.aes State: Uploading Size: -1 Hash: \nOperation: put File: duplicati-b735ea943d69247088d9cfd8312c0418c.dblock.zip.aes Result: {\"Size\":104835613,\"Hash\":\"BTU++hnh6BZsw+YCUchKS855xyMciZQc2+rwRG26Lhc=\"}\nUpdate: duplicati-b9f1c27032e0e41eb81ab7267493a723d.dblock.zip.aes State: Uploading Size: 104688781 Hash: oNXlOo2wrU45h8PR2oL1NtS05AuKEcRDCYD+14KZ5c8=\nUpdate: duplicati-i3b76499cf49d4d47b0bdd919ae802e15.dindex.zip.aes State: Uploading Size: -1 Hash: \nOperation: put File: duplicati-b9f1c27032e0e41eb81ab7267493a723d.dblock.zip.aes Result: {\"Size\":104688781,\"Hash\":\"oNXlOo2wrU45h8PR2oL1NtS05AuKEcRDCYD+14KZ5c8=\"}\nRename: duplicati-b323668440dab4fadb5f5fe960e74f090.dblock.zip.aes -> duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes\nOperation: put File: duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes Result: {\"Size\":104888941,\"Hash\":\"NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\"}\nRename: duplicati-bde4ab5d46c0e4772b73692e061aaed95.dblock.zip.aes -> duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes\nOperation: put File: duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes Result: {\"Size\":104656461,\"Hash\":\"/Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\"}\nRename: duplicati-b9f1c27032e0e41eb81ab7267493a723d.dblock.zip.aes -> duplicati-bb956a29d38244060b749b8a448a7c0cf.dblock.zip.aes\nRename: duplicati-b735ea943d69247088d9cfd8312c0418c.dblock.zip.aes -> duplicati-b6306e28a66a94e6abcaf84b7177f1ef0.dblock.zip.aes\nOperation: put File: duplicati-bb956a29d38244060b749b8a448a7c0cf.dblock.zip.aes Result: {\"Size\":104688781,\"Hash\":\"oNXlOo2wrU45h8PR2oL1NtS05AuKEcRDCYD+14KZ5c8=\"}\nOperation: put File: duplicati-b6306e28a66a94e6abcaf84b7177f1ef0.dblock.zip.aes Result: {\"Size\":104835613,\"Hash\":\"BTU++hnh6BZsw+YCUchKS855xyMciZQc2+rwRG26Lhc=\"}\nRename: duplicati-bb864de3924d64af08169c4ae5287e5a1.dblock.zip.aes -> duplicati-b6fb2f346962a475097ea024324086346.dblock.zip.aes\nOperation: put File: duplicati-b6fb2f346962a475097ea024324086346.dblock.zip.aes Result: {\"Size\":104888941,\"Hash\":\"NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\"}\nRename: duplicati-bd3b807affa984268851c603795ac72ae.dblock.zip.aes -> duplicati-b90406fcaf7ec4c5d9ec2550dfb94015c.dblock.zip.aes\nOperation: put File: duplicati-b90406fcaf7ec4c5d9ec2550dfb94015c.dblock.zip.aes Result: {\"Size\":104656461,\"Hash\":\"/Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\"}\nRename: duplicati-b6306e28a66a94e6abcaf84b7177f1ef0.dblock.zip.aes -> duplicati-b34f075d415784f3898b69fe0c92a131c.dblock.zip.aes\nRename: duplicati-bb956a29d38244060b749b8a448a7c0cf.dblock.zip.aes -> duplicati-b18e44e26b5dc4cfb87f4426130e16e12.dblock.zip.aes\nOperation: put File: duplicati-b18e44e26b5dc4cfb87f4426130e16e12.dblock.zip.aes Result: {\"Size\":104688781,\"Hash\":\"oNXlOo2wrU45h8PR2oL1NtS05AuKEcRDCYD+14KZ5c8=\"}\nOperation: put File: duplicati-b34f075d415784f3898b69fe0c92a131c.dblock.zip.aes Result: {\"Size\":104835613,\"Hash\":\"BTU++hnh6BZsw+YCUchKS855xyMciZQc2+rwRG26Lhc=\"}\nRename: duplicati-b6fb2f346962a475097ea024324086346.dblock.zip.aes -> duplicati-bbb518695d24b41798665afb1b5cf012c.dblock.zip.aes\nOperation: put File: duplicati-bbb518695d24b41798665afb1b5cf012c.dblock.zip.aes Result: {\"Size\":104888941,\"Hash\":\"NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\"}\nRename: duplicati-b90406fcaf7ec4c5d9ec2550dfb94015c.dblock.zip.aes -> duplicati-bfe3689ef015247a7aa943f1d002286ad.dblock.zip.aes\nOperation: put File: duplicati-bfe3689ef015247a7aa943f1d002286ad.dblock.zip.aes Result: {\"Size\":104656461,\"Hash\":\"/Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\"}\nRename: duplicati-b34f075d415784f3898b69fe0c92a131c.dblock.zip.aes -> duplicati-b4ca77e481d1c4877b7b7dfe92a3b33f2.dblock.zip.aes\nRename: duplicati-b18e44e26b5dc4cfb87f4426130e16e12.dblock.zip.aes -> duplicati-bc5d125fd8cd046c48fa97d55c5eae8e7.dblock.zip.aes\nOperation: put File: duplicati-b4ca77e481d1c4877b7b7dfe92a3b33f2.dblock.zip.aes Result: {\"Size\":104835613,\"Hash\":\"BTU++hnh6BZsw+YCUchKS855xyMciZQc2+rwRG26Lhc=\"}\nOperation: put File: duplicati-bc5d125fd8cd046c48fa97d55c5eae8e7.dblock.zip.aes Result: {\"Size\":104688781,\"Hash\":\"oNXlOo2wrU45h8PR2oL1NtS05AuKEcRDCYD+14KZ5c8=\"}\nRename: duplicati-bbb518695d24b41798665afb1b5cf012c.dblock.zip.aes -> duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes\nOperation: put File: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes Result: {\"Size\":104888941,\"Hash\":\"NMzpTrkIKnkzYei8mB1cKFbw0MZsTFhEgntANS2H0O0=\"}\nRename: duplicati-bfe3689ef015247a7aa943f1d002286ad.dblock.zip.aes -> duplicati-b2f3633dfd0c0458cb5ae4390873eeed7.dblock.zip.aes\nOperation: put File: duplicati-b2f3633dfd0c0458cb5ae4390873eeed7.dblock.zip.aes Result: {\"Size\":104656461,\"Hash\":\"/Os47AW7+AD/7BHPNQ6bbCZwLz17+BWZ22Vj/E88I+k=\"}"
  ],
  "Errors": [
    "2025-03-04 10:11:06 +01 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error\nUserInformationException: Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed",
    "2025-03-04 10:11:06 +01 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Backup has failed with error: Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed\nUserInformationException: Error writing file: duplicati-b528ec8e89c6b44bbbc9cc104971f3b66.dblock.zip.aes, error: Status is Failed"
  ],
  "TaskControl": {
    "ProgressToken": {
      "IsCancellationRequested": false,
      "CanBeCanceled": true,
      "WaitHandle": {
        "Handle": {
          "value": 3436
        },
        "SafeWaitHandle": {
          "IsInvalid": false,
          "IsClosed": false
        }
      }
    },
    "TransferToken": {
      "IsCancellationRequested": false,
      "CanBeCanceled": true,
      "WaitHandle": {
        "Handle": {
          "value": 3440
        },
        "SafeWaitHandle": {
          "IsInvalid": false,
          "IsClosed": false
        }
      }
    }
  },
  "BackendStatistics": {
    "RemoteCalls": 19,
    "BytesUploaded": 0,
    "BytesDownloaded": 0,
    "FilesUploaded": 0,
    "FilesDownloaded": 0,
    "FilesDeleted": 0,
    "FoldersCreated": 0,
    "RetryAttempts": 16,
    "UnknownFileSize": 0,
    "UnknownFileCount": 0,
    "KnownFileCount": 0,
    "KnownFileSize": 0,
    "LastBackupDate": "0001-01-01T00:00:00",
    "BackupListCount": 0,
    "TotalQuotaSpace": 0,
    "FreeQuotaSpace": 0,
    "AssignedQuotaSpace": -1,
    "ReportedQuotaError": false,
    "ReportedQuotaWarning": false,
    "MainOperation": "Backup",
    "ParsedResult": "Success",
    "Interrupted": false,
    "Version": "2.1.0.110 (2.1.0.110_canary_2025-02-28)",
    "EndTime": "0001-01-01T00:00:00",
    "BeginTime": "2025-03-04T09:08:58.4043199Z",
    "Duration": "00:00:00",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null,
    "TaskControl": {
      "ProgressToken": {
        "IsCancellationRequested": false,
        "CanBeCanceled": true,
        "WaitHandle": {
          "Handle": {
            "value": 3436
          },
          "SafeWaitHandle": {
            "IsInvalid": false,
            "IsClosed": false
          }
        }
      },
      "TransferToken": {
        "IsCancellationRequested": false,
        "CanBeCanceled": true,
        "WaitHandle": {
          "Handle": {
            "value": 3440
          },
          "SafeWaitHandle": {
            "IsInvalid": false,
            "IsClosed": false
          }
        }
      }
    }
  }
}
        

pure-ftpd didn’t show any erors in log, but vsftpd did show some strange logs:


 FTP response:  "230 Login successful."
 FTP command:  "PBSZ 0"
 FTP response:  "200 PBSZ set to 0."
 FTP command:  "PROT P"
 FTP response:  "200 PROT now Private."
 FTP command:  "FEAT"
 FTP response:  "211-Features:"
 FTP response:  " AUTH TLS\x0D\x0A"
 FTP response:  " EPRT\x0D\x0A"
 FTP response:  " EPSV\x0D\x0A"
 FTP response:  " MDTM\x0D\x0A"
 FTP response:  " PASV\x0D\x0A"
 FTP response:  " PBSZ\x0D\x0A"
 FTP response:  " PROT\x0D\x0A"
 FTP response:  " REST STREAM\x0D\x0A"
 FTP response:  " SIZE\x0D\x0A"
 FTP response:  " TVFS\x0D\x0A"
 FTP response:  " UTF8\x0D\x0A"
 FTP response:  "211 End"
 FTP command:  "OPTS UTF8 ON"
 FTP response:  "200 Always in UTF8 mode."
 FTP command:  "SYST"
 FTP response:  "215 UNIX Type: L8"
 FTP command:  "PWD"
 FTP response:  "257 "/" is the current directory"
 FTP command:  "SIZE /test2/duplicati-b108bdf12e33f40389d56ec042e0338b9.dblock.zip"
 FTP response:  "550 Could not get file size."
 FTP command:  "TYPE I"
 FTP response:  "200 Switching to Binary mode."
 FTP command:  "EPSV"
 FTP response:  "229 Entering Extended Passive Mode (|||47125|)"
 FTP command:  "STOR /test2/duplicati-b108bdf12e33f40389d56ec042e0338b9.dblock.zip"
 FTP response:  "150 Ok to send data."
 FTP response:  "426 Failure reading network stream."
 FAIL UPLOAD:  "/test2/duplicati-b75b2f27bd65447acbaf9a894fee067e1.dblock.zip", 49954816 bytes, 64667.93Kbyte/sec
 FTP command:  "QUIT"
 FTP response:  "221 Goodbye."
 FTP response:  "426 Failure reading network stream."
 FAIL UPLOAD:  "/test2/duplicati-b108bdf12e33f40389d56ec042e0338b9.dblock.zip", 24838144 bytes, 44077.54Kbyte/sec
 FTP command:  "QUIT"
 FTP response:  "221 Goodbye."

files were created on server.
Client is Ubuntu 22.04 and ftp server is Rocky Linux 9.5

[edit]
Here is pure-ftpd sample log for error

Error in handler: Error writing file: duplicati-20250304T113536Z.dlist.zip, error: Status is Failed

:

Mar 04 12:36:26: (?@10.0.0.1) [INFO] New connection from 10.0.0.1
Mar 04 12:36:26: (?@10.0.0.1) [DEBUG] Command [auth] [TLS]
Mar 04 12:36:26: (?@10.0.0.1) [INFO] TLS: Enabled TLSv1.3 with TLS_AES_256_GCM_SHA384, 256 secret bits cipher
Mar 04 12:36:26: (?@10.0.0.1) [DEBUG] Command [user] [backup_user]
Mar 04 12:36:26: (?@10.0.0.1) [DEBUG] Command [pass] [<*>]
Mar 04 12:36:26: (?@10.0.0.1) [INFO] backup_user is now logged in
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [pbsz] [0]
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [prot] [P]
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [feat] []
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [opts] [UTF8 ON]
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [syst] []
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [pwd] []
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [size] [/test3/duplicati-20250304T113536Z.dlist.zip]
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [type] [I]
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [epsv] []
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [stor] [/test3/duplicati-20250304T113536Z.dlist.zip]
Mar 04 12:36:26: (backup_user@10.0.0.1) [INFO] TLS: Enabled TLSv1.3 with TLS_AES_256_GCM_SHA384, 256 secret bits cipher
Mar 04 12:36:26: (backup_user@10.0.0.1) [NOTICE] /backup/backup_user//test3/duplicati-20250304T113536Z.dlist.zip uploaded  (262144 bytes, 61227.22KB/sec)
Mar 04 12:36:26: (backup_user@10.0.0.1) [DEBUG] Command [quit] []
Mar 04 12:36:26: (backup_user@10.0.0.1) [INFO] Logout.

That sounds super odd. The “FTP (alternative)” backend is the same, it just has different defaults for relative paths, SSL mode and FTP active/passive mode. These should either fail or work, not affect transfer stability. If you do not set the flag --use-ssl or the --ftp-passive / --ftp-active options, the two should do the same, and they use the same code.

That pretty much says that something failed with the stream. For the 2.1.0.4, this could this be yet another timeout issue. If so, try perhaps --read-write-timeout=5m.

For 2.1.0.5 or 2.1.0.110 the timeouts should not cause problems.

The FTP server log does not seem to have errors? But I wonder why it sends a notice about TLS after the STOR command was sent?