Duplicati on TrueNAS problems

Hello All,

First off, this is a new truenas scale 25.10 build and new duplicati docker instance.

I’m having a weird problem, actually 2 problems, but have a workaround for one. The main problem is that when I test restore a file that I successfully backed up, it gives an access denied error.

The file actually restores successfully, and restores with proper permissions.

  • 2025-11-18 11:11:41 -06 - [Error-Duplicati.Library.Main.Operation.Restore.FileProcessor-FileProcessingError]: Error during file processing UnauthorizedAccessException: Access to the path ‘/shares/test folder’ is denied.

  • 2025-11-18 11:11:41 -06 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Restore has failed UnauthorizedAccessException: Access to the path ‘/shares/test folder’ is denied.

In the docker instance, I have it set to run as 568 (apps) and 2 data storage volumes

-coniguration data is kept in ixvolume

-access to the shares is done through host storage pointing to the proper folder using mount path /shares and forcing acl to 568 with full control.

When I restore, I am choosing to restore to original (i delete the file first so no overwrite issues) and it doesn’t matter if I set the flag to restore permissions or not.

Anyone else having this issue? Again, the file restores successfully.

More information on the first of the 2 errors that show:

System.UnauthorizedAccessException: Access to the path ‘/shares/test folder’ is denied. —> System.IO.IOException: Operation not permitted — End of inner exception stack trace — at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError) at System.IO.FileStatus.SetAccessOrWriteTimeCore(SafeFileHandle handle, String path, DateTimeOffset time, Boolean isAccessTime, Boolean checkCreationTime, Boolean asDirectory) at System.IO.Directory.SetLastWriteTimeUtc(String path, DateTime lastWriteTimeUtc) at Duplicati.Library.Common.IO.SystemIOLinux.DirectorySetLastWriteTimeUtc(String path, DateTime time) at Duplicati.Library.Main.Operation.RestoreHandler.ApplyMetadata(String path, Stream stream, Boolean restorePermissions, Boolean restoreSymlinkMetadata, Boolean dryrun) at Duplicati.Library.Main.Operation.Restore.FileProcessor.RestoreMetadata(LocalRestoreDatabase db, FileRequest file, IChannel`1 block_request, IChannel`1 block_response, Options options, Stopwatch sw_meta, Stopwatch sw_work, Stopwatch sw_req, Stopwatch sw_resp) at Duplicati.Library.Main.Operation.Restore.FileProcessor.<>c__DisplayClass2_0.<b__0>d.MoveNext() — End of stack trace from previous location — at CoCoL.AutomationExtensions.RunTask[T](T channels, Func`2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.RestoreHandler.DoRunNewAsync(IBackendManager backendManager, LocalRestoreDatabase database, IFilter filter, CancellationToken cancellationToken) at Duplicati.Library.Main.Operation.RestoreHandler.RunAsync(String paths, IBackendManager backendManager, IFilter filter) at Duplicati.Library.Main.Controller.<>c__DisplayClass23_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Utility.Utility.Await(Task task) at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Func`3 method) at Duplicati.Library.Main.Controller.Restore(String paths, IFilter filter) at Duplicati.Server.Runner.RunInternal(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IRunnerData data, Boolean fromQueue) at Duplicati.Server.Runner.Run(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IQueuedTask data, Boolean fromQueue) at Duplicati.WebserverCore.Services.QueueRunnerService.RunTask(IQueuedTask task)

And the second error:

System.UnauthorizedAccessException: Access to the path ‘/shares/test folder’ is denied. —> System.IO.IOException: Operation not permitted — End of inner exception stack trace — at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirError) at System.IO.FileStatus.SetAccessOrWriteTimeCore(SafeFileHandle handle, String path, DateTimeOffset time, Boolean isAccessTime, Boolean checkCreationTime, Boolean asDirectory) at System.IO.Directory.SetLastWriteTimeUtc(String path, DateTime lastWriteTimeUtc) at Duplicati.Library.Common.IO.SystemIOLinux.DirectorySetLastWriteTimeUtc(String path, DateTime time) at Duplicati.Library.Main.Operation.RestoreHandler.ApplyMetadata(String path, Stream stream, Boolean restorePermissions, Boolean restoreSymlinkMetadata, Boolean dryrun) at Duplicati.Library.Main.Operation.Restore.FileProcessor.RestoreMetadata(LocalRestoreDatabase db, FileRequest file, IChannel`1 block_request, IChannel`1 block_response, Options options, Stopwatch sw_meta, Stopwatch sw_work, Stopwatch sw_req, Stopwatch sw_resp) at Duplicati.Library.Main.Operation.Restore.FileProcessor.<>c__DisplayClass2_0.<b__0>d.MoveNext() — End of stack trace from previous location — at CoCoL.AutomationExtensions.RunTask[T](T channels, Func`2 method, Boolean catchRetiredExceptions) at Duplicati.Library.Main.Operation.RestoreHandler.DoRunNewAsync(IBackendManager backendManager, LocalRestoreDatabase database, IFilter filter, CancellationToken cancellationToken) at Duplicati.Library.Main.Operation.RestoreHandler.RunAsync(String paths, IBackendManager backendManager, IFilter filter) at Duplicati.Library.Main.Controller.<>c__DisplayClass23_0.<b__0>d.MoveNext() — End of stack trace from previous location — at Duplicati.Library.Utility.Utility.Await(Task task) at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Func`3 method) at Duplicati.Library.Main.Controller.Restore(String paths, IFilter filter) at Duplicati.Server.Runner.RunInternal(Connection databaseConnection, EventPollNotify eventPollNotify, INotificationUpdateService notificationUpdateService, IProgressStateProviderService progressStateProviderService, IApplicationSettings applicationSettings, IRunnerData data, Boolean fromQueue)

Closing this as we decided to go a different route.