Rilevare collisioni di nomi file case-sensitive inventariando ogni percorso relativo, normalizzando ogni percorso secondo le regole di confronto della destinazione e raggruppando i percorsi che producono la stessa chiave normalizzata. Risolvere ogni gruppo prima di copiare i dati.
Questo controllo preflight è essenziale quando si passa da una condivisione Linux case-sensitive a Windows, volumi macOS predefiniti o namespace SMB case-insensitive. Un conteggio normale dei file non rivelerà che due nomi sorgente validi competono per un solo nome di destinazione.
Cosa si intende per collisione di nomi file?
Si verifica una collisione quando percorsi sorgente distinti sono trattati come lo stesso percorso dalla destinazione. Un promemoria pratico sulle differenze di sensibilità alle maiuscole tra piattaforme mostra perché Report.pdf e report.pdf possono comportarsi diversamente, ma il confronto deve includere ogni componente della directory.
I conflitti cross-platform possono anche coinvolgere la normalizzazione Unicode, spazi o punti finali, nomi di dispositivi riservati e caratteri vietati da una destinazione. Le cause di modifiche ai nomi file tra macOS e Linux rientrano nella stessa verifica di compatibilità dei percorsi.
Definire la destinazione prima della scansione. Una copia su ext4, NTFS o un dataset supportato da SMB può mostrare comportamenti di denominazione diversi. Questo è correlato al motivo per cui il comportamento SMB differisce tra i client.
Quali tipi di collisione devono essere segnalati nel rapporto preflight?
Separare le categorie di collisione per rendere prevedibile la risoluzione. Una coppia che differisce solo per maiuscole/minuscole può solitamente essere rinominata, mentre un nome riservato di Windows può richiedere sia la rinomina sia un aggiornamento del riferimento nell'applicazione.
| Tipo di collisione | Esempio | Perché la copia non è sicura |
|---|---|---|
| Solo differenze di maiuscole/minuscole |
Foto.jpg e photo.jpg
|
La destinazione case-insensitive vede un solo nome |
| Maiuscole/minuscole nella componente della directory |
Client/A e client/A
|
Interi sottorami possono fondersi |
| Normalizzazione Unicode | Nomi composti e decomposti visivamente identici | macOS e i livelli di rete possono normalizzare in modo diverso |
| Caratteri rimossi |
note e note.
|
Alcuni percorsi di Windows ignorano i punti o gli spazi finali |
| Nome riservato | CON.txt |
L'API di destinazione può rifiutare la creazione |
Il rapporto dovrebbe preservare il percorso originale a livello di byte e mostrare una forma leggibile. Nomi Unicode visivamente identici altrimenti possono sembrare una linea duplicata invece di due voci distinte della sorgente.
Come Costruire un Inventario Affidabile della Sorgente?
Esegui l'inventario sul filesystem di origine o tramite lo stesso protocollo usato per la migrazione. Esporta i percorsi relativi in un formato che gestisca in sicurezza spazi, tabulazioni, nuove linee e caratteri non ASCII.
Includi le directory perché due nomi di directory in collisione possono nascondere migliaia di file interessati. Registra tipo di oggetto, dimensione, data di modifica e un identificatore stabile quando disponibile così gli elementi rinominati possono essere tracciati.
Blocca le scritture o fai uno snapshot prima della scansione finale. Se i nomi cambiano tra inventario e copia, un preflight pulito può diventare obsoleto prima che inizi la migrazione.
Come Devono Essere Normalizzati i Percorsi per il Confronto?
Inizia con il comportamento di folding delle maiuscole/minuscole della destinazione. Confronta una chiave in minuscolo o case-folded mantenendo il percorso originale per la segnalazione. Non rinominare automaticamente la sorgente in questo passaggio.
Poi aggiungi regole specifiche per la destinazione: normalizzazione Unicode, gestione dei separatori, caratteri proibiti, suffissi troncati, limiti di lunghezza del percorso e nomi riservati. Normalizzare più aggressivamente della destinazione può creare falsi positivi, mentre normalizzare meno può far perdere collisioni distruttive.
Applica la normalizzazione a ogni componente del percorso. Due file con nomi base diversi collidono comunque se le loro directory genitrici si riducono allo stesso percorso normalizzato.
Cosa Puoi Eseguire su Linux, macOS o Windows?
Su Linux o macOS, uno script può leggere percorsi delimitati da null, calcolare una chiave di destinazione, ordinarli per quella chiave e segnalare gruppi con più di un percorso originale. I metodi pubblicati per trovare file duplicati con lo stesso nome illustrano la logica di raggruppamento, ma gli archivi multilingue necessitano di una gestione esplicita di Unicode.
find /source -print0 | python3 collision_scan.py --target windows
Su Windows, PowerShell può enumerare i percorsi relativi e raggrupparli usando un comparatore ordinale case-insensitive. Eseguilo contro la condivisione di origine con un account che può vedere ogni directory prevista.
Get-ChildItem -LiteralPath '\\NAS\Source' -Recurse -Force |
ForEach-Object { $_.FullName.Substring($root.Length).ToLowerInvariant() } |
Group-Object | Where-Object Count -gt 1
Questi esempi illustrano il modello di raggruppamento, non uno scanner universale. I controlli in produzione devono preservare gli originali, gestire percorsi inaccessibili e implementare tutte le regole di denominazione della destinazione.
Come risolvere i gruppi di collisione?
Scegli un nome canonico con il proprietario dei dati, poi rinomina gli altri percorsi usando un suffisso deterministico come un codice progetto, data o tag del sistema sorgente. Regole di denominazione per server domestico coerenti aiutano a evitare suffissi arbitrari.
- Esporta il gruppo di collisione e il dipartimento o applicazione proprietaria.
- Seleziona il percorso che mantiene l'ortografia canonica.
- Rinomina i percorsi in conflitto sulla sorgente o in una copia temporanea.
- Aggiorna playlist, database, scorciatoie, script e manifest che li referenziano.
- Esegui nuovamente la scansione completa finché non rimangono gruppi bloccanti.
Non permettere allo strumento di copia di decidere silenziosamente tramite l'ordine di sovrascrittura. Anche se i contenuti dei file sono identici, collassare silenziosamente i nomi distrugge le prove sull'originale spazio dei nomi.
Come si verifica che la copia non abbia collassato i percorsi?
Cattura un manifesto pre-copia dopo la correzione e genera un manifesto di destinazione con le stesse regole di percorso relativo. Confronta insiemi di percorsi normalizzati, conteggi oggetti, dimensioni e hash di contenuto per i file critici.
Controlla i log di copia per eventi come “esiste già”, rinomina, salta, nome non valido e sovrascrittura. Un codice di uscita zero può comunque accompagnare percorsi saltati a seconda dello strumento.
Mantieni la sorgente in sola lettura finché gli utenti non convalidano il comportamento dell'applicazione. La compatibilità dello spazio dei nomi include link e riferimenti, non solo la presenza dei byte del file.
FAQ
Possono esistere su Linux due nomi di file che differiscono solo per maiuscole/minuscole?
Di solito sì sui comuni filesystem Linux case-sensitive. Possono però collidere se copiati su una destinazione case-insensitive o esposti tramite un servizio configurato diversamente.
Convertire ogni nome di file in minuscolo è una soluzione sicura?
No. La conversione in minuscolo di massa può creare nuove collisioni e rompere i riferimenti. Rileva prima i gruppi, poi applica rinominazioni revisionate e deterministiche.
I checksum rilevano le collisioni nei nomi dei file?
I checksum confrontano il contenuto, non l'identità dello spazio dei nomi. Due percorsi diversi possono avere contenuti diversi o identici e comunque competere per un unico nome di destinazione.
Una copia sicura e multipiattaforma dimostra che ogni percorso di origine corrisponde a un unico percorso di destinazione valido. Esegui questa verifica prima del trasferimento anziché scoprire collisioni tramite file sovrascritti.
Supporto e consigli
Altro da leggere

Perché un array RAID diventa inattivo dopo un'interruzione di corrente?
Un array inattivo spesso significa che sono stati trovati i metadati, ma il sistema non aveva sufficiente fiducia o membri per avviarlo in modo...

Quali sono i rischi di forzare il ripristino online di un membro RAID mancante?
Le opzioni di forzatura possono bypassare i controlli di sicurezza relativi a metadati obsoleti, parità sporca, scritture mancanti o pool attivi; ispeziona e conserva...

Come Distinguere un Cavo SATA Difettoso da un Disco NAS in Guarigione
Monitora se gli errori seguono il disco o rimangono con il percorso SATA, e separa i contatori di trasporto dalle evidenze di salute del...

