duplicati/duplicati · error · UserInformationException

PureFTPdTruncatedListing

PureFTPdTruncatedListing

Error message

PureFTPd server effectively truncated the listing due to LimitRecursion parameter - please check documentation for more information

What it means

Error "PureFTPd server effectively truncated the listing due to LimitRecursion parameter - please check documentation for more information" thrown in duplicati/duplicati.

Source

Thrown at Duplicati/Library/Backend/FTP/FTPBackend.cs:364

        public async IAsyncEnumerable<IFileEntry> ListAsync([EnumeratorCancellation] CancellationToken cancelToken)
        {
            FtpListItem[] items;
            try
            {
                var client = await CreateClient(cancelToken).ConfigureAwait(false);
                var remotePath = PreparePathForClient(null);

                items = await Utility.Utility.WithTimeout(_timeouts.ListTimeout, cancelToken, ct =>
                    client.GetListing(remotePath, FtpListOption.Modify | FtpListOption.Size, ct)
                ).ConfigureAwait(false);

                if (client.ServerType == FtpServer.PureFTPd)
                {
                    // If the list was truncated an exception has to be raised as the listing is incomplete and can lead to misleading backup/restore results
                    if (client.LastReplies.Any(x =>
                           x.Code == "226" &&
                           x.Message.Contains("truncated", StringComparison.InvariantCultureIgnoreCase)))
                        throw new UserInformationException("PureFTPd server effectively truncated the listing due to LimitRecursion parameter - please check documentation for more information", "PureFTPdTruncatedListing");

                    // If no truncation occured and the ignore flag is not set, issue an advisory message
                    if (!_IgnorePureFTPdLimitIssue)
                        Log.WriteWarningMessage(LogTag, "PureFTPdIssue", null, Strings.DescriptionIgnorePureFTPLong);
                }
            }
            catch (Exception e)
            {
                TranslateException(null, e);
                throw;
            }

            foreach (var item in items)
            {
                switch (item.Type)
                {
                    case FtpObjectType.Directory:
                        if (item.Name == "." || item.Name == "..")

View on GitHub (pinned to 3f348be3e3)

Solutions

  1. Increase the PureFTPd LimitRecursion setting on the server.
  2. Split the backup into multiple destinations/folders with fewer files.
  3. Suppress the warning with the documented option if the file count is acceptable.

When it happens

Trigger: Thrown at Duplicati/Library/Backend/FTP/FTPBackend.cs:364 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of duplicati/duplicati@3f348be3e3 (2026-08-13). Data as JSON: /api/errors/3c55daee5effdfa8. Report an issue: GitHub.