La complessità dei percorsi di file: comprendere il limite dei 260 caratteri

Nell'informatica moderna, la gestione dei dati è una delle operazioni più quotidiane e, apparentemente, semplici. Tuttavia, dietro la facilità con cui creiamo cartelle e nominiamo documenti, si cela una struttura tecnica rigorosa. Nell'API Windows, con alcune eccezioni descritte nei paragrafi seguenti, la lunghezza massima per un percorso è MAX_PATH, definita come 260 caratteri. Un percorso locale è strutturato nell'ordine seguente: lettera di unità, due punti, barra rovesciata, componenti dei nomi separati da barre rovesciate e un carattere Null di terminazione. Ad esempio, il percorso massimo nell'unità D è "D:\some 256-character path string" dove "" rappresenta il carattere null di terminazione invisibile per la tabella codici di sistema corrente.

Schema illustrativo della struttura di un percorso file in ambiente Windows

La natura dei limiti nei sistemi operativi

Quando si analizzano i limiti dei vari sistemi, tutto dipende dal filesystem usato. Windows, con il filesystem NTFS, impone la lunghezza massima di 260 caratteri e, in più, impedisce l'uso dei caratteri / \ : * ” ? < > |. Tuttavia, in certe condizioni, si può giungere a percorsi di 32.767 caratteri; si tratta di un caso molto raro di utilizzo per gli utenti normali e che interessa soprattutto le comunicazioni fra server, perché in quel caso i percorsi dei file sono lunghi per ovvie ragioni tecniche.

Al contrario, in Linux il limite per la lunghezza di un percorso è fissato virtualmente a 4096 caratteri mentre il nome di un file può essere al massimo di 255 caratteri. Nonostante ciò, però, i file system di Linux permettono di andare ben oltre questi limiti e questo spiega perché si preferisca Linux in ambiente server. MacOS, anche con il più recente filesystem APFS, impone una lunghezza massima del nome file di 255 caratteri ma un percorso può arrivare al massimo fino a 1024 caratteri.

Tabella comparativa dei limiti di caratteri tra i principali file system (NTFS, EXT4, APFS)

Le conseguenze operative della nomenclatura eccessiva

Vi è una terribile abitudine presso l'utenza media di computer: l'uso di nomi lunghissimi per file e cartelle. Se da un lato all'utente medio sembra una scelta naturale quella di creare nomi di file lunghi per descrivere meglio il contenuto, dall'altro egli non sa che questa pessima abitudine può causare enormi problemi al sistema e, in particolar modo, quando ci si trova in un ambiente di lavoro informatizzato in cui quei file sono spesso condivisi con i colleghi.

Quando un file ha un percorso troppo lungo (inteso come lunghezza in caratteri del percorso di cartelle e del nome del file stesso), il primo sintomo che indica problemi consiste nel rifiuto di aprire, cancellare o spostare il file da parte del sistema operativo. Un esempio concreto di percorso critico:C:\Cartella condivisa\Ufficio XYZ\Area 1 - Ufficio finanza e contabilità\Cartella di Mario Rossi - Relazioni finali anni fiscali 2010 - 2020\Relazioni anni 2010-2020\Relazione Anno 2020\PDF\Relazione finale anno fiscale\Relazione anno 2020 validata e verificata - firmata digitalmente.pdf

Questo percorso misura 288 caratteri spazi inclusi: quando il collega di Mario Rossi vorrà andare a leggere il file direttamente nella cartella condivisa, Windows si rifiuterà categoricamente di mostrare i contenuti.

Strategie di archiviazione e best practices

Per evitare blocchi operativi, sarebbe meglio pensare a non creare troppe sottocartelle e a creare archivi compressi, come .ZIP, all'interno dei quali organizzare la struttura necessaria. La normativa ISO 9660 stabilisce regole precise per l'interscambio di dati tra sistemi operativi, precisando che non devono essere presenti determinati caratteri speciali e spazi, una consuetudine nata proprio per evitare le criticità citate.

Una pratica consigliata è quella di adottare convenzioni di denominazione concise. Invece di descrizioni prolisse, utilizzare acronimi o codifiche standardizzate:

  • ES. FATTURAPAGATAGIUGNO_2020.PDF
  • Mantenere sempre aggiornato il sistema operativo.

Come Organizzo i File sul Computer 💻5 REGOLE per non perdere nulla

Espansione delle potenzialità di Windows 10 e 11

L'API di Windows ha molte funzioni che dispongono anche di versioni Unicode per consentire un percorso di lunghezza estesa per una lunghezza totale massima di 32.767 caratteri. Questo tipo di percorso è costituito da componenti separati da barre rovesciate, ognuna fino al valore restituito nel parametro lpMaximumComponentLength della funzione GetVolumeInformation (questo valore è in genere 255 caratteri).

Per specificare un percorso di lunghezza estesa, usare il prefisso "\?\". Il prefisso "\?\" può essere usato anche con i percorsi costruiti in base alla convenzione di denominazione universale (UNC). Per specificare un percorso di questo tipo usando UNC, usare il prefisso "\?\UNC\". Ad esempio, "\?\UNC\server\share", dove "server" è il nome del computer e "condivisione" è il nome della cartella condivisa. Questi prefissi indicano che il percorso deve essere passato al sistema con modifiche minime.

A partire da Windows 10 versione 1607, le limitazioni MAX_PATH sono state rimosse da molte funzioni comuni di file e directory Win32. Per abilitare il nuovo comportamento di percorso lungo per applicazione, è necessario soddisfare due condizioni:

  1. Il valore HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD) del Registro di sistema deve esistere e essere impostato su 1.
  2. Gli sviluppatori devono dichiarare le proprie app nel manifesto dell'applicazione come consapevoli del percorso lungo.

Questa impostazione del Registro di sistema può essere controllata anche tramite Criteri di gruppo all'indirizzo: Computer Configuration > Administrative Templates > System > Filesystem > Enable Win32 long paths.

Infografica sulla procedura di modifica del registro di sistema per abilitare i percorsi lunghi

Procedure tecniche per l'utente avanzato

Per chi necessita di sbloccare questa limitazione su sistemi operativi moderni, la procedura via registro o criteri di gruppo è fondamentale. Se l'abilitazione dei percorsi lunghi Win32 tramite l'Editor Criteri di Gruppo (gpedit.msc) non dovesse risolvere immediatamente, è necessario verificare che le applicazioni utilizzate siano effettivamente in grado di gestire tali stringhe. Il valore del Registro di sistema verrà memorizzato nella cache dal sistema (per processo) dopo la prima chiamata a una funzione di directory o file Win32 interessata.

È importante sottolineare che la shell e il file system hanno requisiti diversi. Non è necessario eseguire alcuna normalizzazione Unicode sulle stringhe di percorso e nome file per l'uso da parte delle funzioni API di I/O dei file di Windows perché il file system considera i nomi di percorso e file come una sequenza opaca di WCHARs. In ogni caso, il superamento del limite tramite registro non è una panacea per software obsoleti che hanno codificato rigidamente il limite di 260 caratteri nel proprio codice sorgente; in tali scenari, l'unica soluzione rimane l'abbreviazione dei nomi dei file o la ristrutturazione dell'albero delle directory.

tags: #max #255 #caratteri #cosa #significa