Long Path Support in ioFTPD

ioFTPD v7.10.0+ supports long‑path operation across all major FTP operations. This page explains how long‑path handling works, what Windows actually supports, and the real‑world limitations users will encounter on NTFS, mapped drives, and UNC/SMB shares.

Long‑path support allows ioFTPD to operate on paths longer than the legacy 260‑character MAX_PATH limit, but not all backends support the same maximum length. Understanding these differences is essential for reliable operation.


Overview

Windows historically limited paths to 260 characters (MAX_PATH). Modern Windows versions allow paths up to ~32,767 UTF‑16 characters when long‑path support is enabled. ioFTPD now uses wide‑path (\\?\) APIs to support these extended paths.

Supported operations:


Requirements

Long‑path support requires:

  1. Windows 10 build 14393+ or Windows Server 2016+
  2. Registry key enabled:
    HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1
    
  3. ioFTPD v7.10.0 or later (includes longPathAware manifest)

Configuration

[FTP]
Long_Path_Support = Auto   ; Auto (default), On, or Off

Compatibility Matrix

This matrix summarizes how long‑path support behaves across different backends.
This is the most important section for users to understand.

Scenario Local NTFS Mapped Drive (Z:) UNC Path (\server\share) Notes
Directory listing (LIST/MLSD) ✔ Fully supported ✔ Fully supported ✔ Supported until SMB normalization fails SMB often fails earlier than NTFS
CWD / PWD UNC normalization may fail at extreme depth
STOR / APPE (upload) ⚠ May fail early SMB rejects long normalized paths
RETR (download) ⚠ Same as STOR  
DELE (file delete) ✔ until SMB limit  
RMD (directory delete) ✔ until SMB limit .ioFTPD handling now correct
RNFR/RNTO (rename/move) ⚠ Destination path often fails first .ioFTPD creation triggers SMB limit
SIZE / MDTM / MLST ✔ until SMB limit  
DirectoryCache recursion ⚠ Deep UNC paths may fail  
Reparse points (junctions) ❌ Not supported SMB cannot expose reparse metadata
Maximum path length ~32k UTF‑16 ~32k UTF‑16 ⚠ Typically 1–4k depending on SMB server SMB is the limiting factor
Per‑component limit 255 chars 255 chars ⚠ Often 200–255 Some SMB servers enforce shorter limits

Why “Long Paths Enabled” Does Not Mean 32k Everywhere

Even with long‑path support enabled in Windows and ioFTPD:

This means:

SMB servers impose their own internal limits:

These limits vary by:

ioFTPD cannot override SMB’s limits.


Error Messages

ioFTPD normalizes all long‑path failures to:

550 <path>: Path too long for NTFS.

This replaces older inconsistent messages such as:

This message is returned consistently across:


Known SMB/UNC Limitations

UNC/SMB paths are the least reliable backend for long paths.
Common limitations include:

Mapped drives avoid many UNC limitations because Windows resolves the UNC path before ioFTPD sees it.


Practical Guidance


Summary

ioFTPD now supports deep directory structures and long filenames on modern Windows systems.
Local NTFS and mapped drives offer the best compatibility, while UNC/SMB paths depend heavily on the SMB server’s own limits.

Long‑path support is powerful, but not all backends support the same maximum length. Understanding these differences ensures reliable operation and avoids unexpected failures.