Right after the update, my next backup failed.
2024-05-11 18:13:15 +08 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error
FileNotFoundException: Could not find file ‘\?\N:\Backup\Duplicati\PA\duplicati-bdd360062d64b4c49ab31f31c1e00baef.dblock.zip.aes’.
I tried running repair, to no avail. I tried recreating the database, and the system told me it couldn’t, and to run list-broken-files and purge-broken-files. It found ten broken files (all the same file, but for different backup dates) but purge-broken-files failed:
Uploading file duplicati-20230608T110001Z.dlist.zip.aes (16.68 MB) …
Uploading file duplicati-20230608T110002Z.dlist.zip.aes (16.68 MB) …
Uploading file duplicati-20230608T110003Z.dlist.zip.aes (16.68 MB) …
Uploading file duplicati-20230608T110004Z.dlist.zip.aes (16.68 MB) …
Uploading file duplicati-20230608T110005Z.dlist.zip.aes (16.68 MB) …
The operation PurgeBrokenFiles has failed with error: One or more errors occurred. => One or more errors occurred.System.AggregateException: One or more errors occurred. —> System.IO.FileNotFoundException: Could not find file ‘\?\N:\Backup\Duplicati\PA\duplicati-20230608T110005Z.dlist.zip.aes’.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream…ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at Duplicati.Library.Common.IO.SystemIOWindows.FileCreate(String path)
at Duplicati.Library.Backend.File.d__23.MoveNext()
— End of inner exception stack trace —
at Duplicati.Library.Main.BackendManager.Put(VolumeWriterBase item, IndexVolumeWriter indexfile, Action indexVolumeFinishedCallback, Boolean synchronous)
at Duplicati.Library.Main.Operation.PurgeFilesHandler.DoRun(LocalPurgeDatabase db, IFilter filter, Action3 filtercommand, Single pgoffset, Single pgspan) at Duplicati.Library.Main.Operation.PurgeBrokenFilesHandler.Run(IFilter filter) at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Action
1 method)
at Duplicati.Library.Main.Controller.PurgeBrokenFiles(IFilter filter)
at Duplicati.CommandLine.Commands.PurgeBrokenFiles(TextWriter outwriter, Action1 setup, List
1 args, Dictionary2 options, IFilter filter) at Duplicati.CommandLine.Program.ParseCommandLine(TextWriter outwriter, Action
1 setup, Boolean& verboseErrors, String args)
at Duplicati.CommandLine.Program.RunCommandLine(TextWriter outwriter, TextWriter errwriter, Action`1 setup, String args)
—> (Inner Exception #0) System.IO.FileNotFoundException: Could not find file ‘\?\N:\Backup\Duplicati\PA\duplicati-20230608T110005Z.dlist.zip.aes’.
File name: ‘\?\N:\Backup\Duplicati\PA\duplicati-20230608T110005Z.dlist.zip.aes’
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream…ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at Duplicati.Library.Common.IO.SystemIOWindows.FileCreate(String path)
at Duplicati.Library.Backend.File.d__23.MoveNext()<—
Return code: 100
Duplicati is great when it works, but it’s too fragile. One missing or damaged file shouldn’t prevent all subsequent backups – which is currently the case. No more backup.