Wykrywaj kolizje nazw plików z uwzględnieniem wielkości liter, inwentaryzując każdą ścieżkę względną, normalizując każdą ścieżkę według reguł porównania miejsca docelowego i grupując ścieżki, które dają ten sam znormalizowany klucz. Rozwiąż każdą grupę przed kopiowaniem danych.
Ten preflight jest niezbędny przy przenoszeniu z czułego na wielkość liter udziału Linux do Windows, domyślnych woluminów macOS lub nieczułych na wielkość liter przestrzeni nazw SMB. Zwykłe liczenie plików nie ujawni, że dwie poprawne nazwy źródłowe konkurują o jedną nazwę docelową.
Co liczy się jako kolizja nazwy pliku?
Kolizja występuje, gdy różne ścieżki źródłowe są traktowane jako ta sama ścieżka przez miejsce docelowe. Praktyczne przypomnienie o różnicach w rozróżnianiu wielkości liter między platformami pokazuje, dlaczego Report.pdf i report.pdf mogą zachowywać się inaczej, ale porównanie musi obejmować każdy składnik katalogu.
Konflikty międzyplatformowe mogą również dotyczyć normalizacji Unicode, końcowych spacji lub kropek, zarezerwowanych nazw urządzeń oraz znaków zabronionych przez jedno z miejsc docelowych. Przyczyny zmian nazw plików między macOS a Linuxem należą do tego samego audytu zgodności ścieżek.
Zdefiniuj cel przed skanowaniem. Kopia na ext4, NTFS lub zestaw danych obsługiwany przez SMB może ujawnić różne zachowania nazw. Jest to związane z tym, dlaczego zachowanie SMB różni się między klientami.
Jakie typy kolizji powinien raportować preflight?
Oddziel kategorie kolizji, aby rozwiązanie było przewidywalne. Para różniąca się tylko wielkością liter zwykle może zostać przemianowana, podczas gdy zarezerwowana nazwa Windows może wymagać zarówno zmiany nazwy, jak i aktualizacji odwołań w aplikacji.
| Typ kolizji | Przykład | Dlaczego kopiowanie jest niebezpieczne |
|---|---|---|
| Tylko wielkość liter |
Photo.jpg i photo.jpg
|
Cel bez rozróżniania wielkości liter widzi jedną nazwę |
| Wielkość liter w składniku katalogu |
Client/A i client/A
|
Całe poddrzewa mogą się łączyć |
| Normalizacja Unicode | Wizualnie identyczne nazwy złożone i rozłożone | macOS i warstwy sieciowe mogą normalizować inaczej |
| Przycięte znaki |
notatki i notatki.
|
Niektóre ścieżki Windows ignorują końcowe kropki lub spacje |
| Zarezerwowana nazwa | CON.txt |
API miejsca docelowego może odmówić utworzenia |
Raport powinien zachować oryginalną ścieżkę na poziomie bajtów i wyświetlać czytelną formę. Wizualnie identyczne nazwy Unicode mogą inaczej wyglądać jak zduplikowana linia zamiast dwóch odrębnych wpisów źródłowych.
Jak zbudować niezawodną inwentaryzację źródła?
Uruchom inwentaryzację na systemie plików źródłowym lub przez ten sam protokół używany do migracji. Eksportuj ścieżki względne w formacie bezpiecznie obsługującym spacje, tabulatory, nowe linie i znaki nie-ASCII.
Uwzględnij katalogi, ponieważ dwie kolidujące nazwy katalogów mogą ukrywać tysiące dotkniętych plików. Zapisz typ obiektu, rozmiar, czas modyfikacji i stabilny identyfikator, jeśli jest dostępny, aby można było śledzić zmienione nazwy.
Zamroź zapisy lub wykonaj migawkę przed ostatecznym skanem. Jeśli nazwy zmienią się między inwentaryzacją a kopiowaniem, czysty preflight może się zdezaktualizować przed rozpoczęciem migracji.
Jak powinny być normalizowane ścieżki do porównania?
Zacznij od zachowania wielkości liter w miejscu docelowym. Porównuj klucz w formie małych liter lub znormalizowany pod kątem wielkości, zachowując oryginalną ścieżkę do raportowania. Nie zmieniaj automatycznie nazwy źródła na tym etapie.
Następnie dodaj reguły specyficzne dla miejsca docelowego: normalizację Unicode, obsługę separatorów, niedozwolone znaki, obcięte sufiksy, limity długości ścieżki i zarezerwowane nazwy. Zbyt agresywna normalizacja względem miejsca docelowego może powodować fałszywe alarmy, a zbyt słaba może przeoczyć destrukcyjne kolizje.
Zastosuj normalizację do każdego składnika ścieżki. Dwa pliki o różnych nazwach bazowych nadal kolidują, jeśli ich katalogi nadrzędne znormalizują się do tej samej ścieżki.
Co można uruchomić na Linux, macOS lub Windows?
W systemach Linux lub macOS skrypt może odczytywać ścieżki rozdzielone znakiem null, obliczać klucz docelowy, sortować według tego klucza i raportować grupy z więcej niż jedną oryginalną ścieżką. Opublikowane metody znajdowania zduplikowanych nazw plików niezależnie od wielkości liter ilustrują logikę grupowania, ale archiwa wielojęzyczne wymagają jawnej obsługi Unicode.
find /source -print0 | python3 collision_scan.py --target windows
W systemie Windows PowerShell może wyliczać ścieżki względne i grupować je za pomocą porównywarki bez rozróżniania wielkości liter. Uruchom go na udziale źródłowym z kontem, które ma dostęp do wszystkich zamierzonych katalogów.
Get-ChildItem -LiteralPath '\\NAS\Source' -Recurse -Force |
ForEach-Object { $_.FullName.Substring($root.Length).ToLowerInvariant() } |
Group-Object | Where-Object Count -gt 1
Te przykłady ilustrują model grupowania, a nie uniwersalny skaner. Kontrole produkcyjne muszą zachować oryginały, obsłużyć niedostępne ścieżki i wdrożyć pełne zasady nazewnictwa celu.
Jak rozwiązywać grupy kolizji?
Wybierz nazwę kanoniczną z właścicielem danych, a następnie zmień nazwy pozostałych ścieżek, używając deterministycznego sufiksu, takiego jak kod projektu, data lub tag systemu źródłowego. Spójne zasady nazewnictwa serwera domowego pomagają unikać arbitralnych sufiksów.
- Eksportuj grupę kolizji oraz jej właściciela – dział lub aplikację.
- Wybierz ścieżkę zachowującą kanoniczną pisownię.
- Zmień nazwy kolidujących ścieżek w źródle lub w kopii etapowej.
- Zaktualizuj playlisty, bazy danych, skróty, skrypty i manifesty, które się do nich odwołują.
- Uruchom ponownie pełne skanowanie, aż nie pozostaną blokujące grupy.
Nie pozwalaj narzędziu kopiującemu decydować cicho przez kolejność nadpisywania. Nawet jeśli zawartość obu plików jest identyczna, ciche zlewanie nazw niszczy dowody o oryginalnej przestrzeni nazw.
Jak zweryfikować, że kopiowanie nie zlepiło ścieżek?
Zrób manifest przed kopiowaniem po remediacji i wygeneruj manifest docelowy z tymi samymi zasadami ścieżek względnych. Porównaj znormalizowane zestawy ścieżek, liczbę obiektów, rozmiary i sumy kontrolne krytycznych plików.
Przejrzyj logi kopiowania pod kątem zdarzeń „już istnieje”, zmiana nazwy, pominięcie, nieprawidłowa nazwa i nadpisanie. Kod wyjścia zero może towarzyszyć pominiętym ścieżkom w zależności od narzędzia.
Zachowaj źródło jako tylko do odczytu, dopóki użytkownicy nie potwierdzą działania aplikacji. Zgodność przestrzeni nazw obejmuje linki i odwołania, nie tylko obecność bajtów pliku.
FAQ
Czy na Linuxie mogą istnieć dwie nazwy plików różniące się tylko wielkością liter?
Zazwyczaj tak na popularnych systemach plików Linux rozróżniających wielkość liter. Mogą jednak kolidować po skopiowaniu na system nie rozróżniający wielkości liter lub udostępnieniu przez inaczej skonfigurowaną usługę.
Czy konwersja każdej nazwy pliku na małe litery to bezpieczne rozwiązanie?
Nie. Masowe zamienianie na małe litery może tworzyć nowe kolizje i łamać odwołania. Najpierw wykryj grupy, a następnie zastosuj zweryfikowane, deterministyczne zmiany nazw.
Czy sumy kontrolne wykrywają kolizje nazw plików?
Sumy kontrolne porównują zawartość, a nie tożsamość przestrzeni nazw. Dwie różne ścieżki mogą mieć różną lub identyczną zawartość i nadal rywalizować o jedną nazwę docelową.
Bezpieczne kopiowanie międzyplatformowe dowodzi, że każda ścieżka źródłowa odpowiada jednej unikalnej, prawidłowej ścieżce docelowej. Wykonaj to potwierdzenie przed transferem, zamiast odkrywać kolizje przez nadpisane pliki.
Wsparcie i wskazówki
Więcej do przeczytania

Dlaczego macierz RAID staje się nieaktywna po utracie zasilania?
Nieaktywna macierz często oznacza, że znaleziono metadane, ale system nie miał wystarczającej pewności ani członków, aby bezpiecznie ją uruchomić po nieprawidłowym zamknięciu.

Jakie są ryzyka związane z wymuszaniem ponownego podłączenia brakującego członka RAID?
Opcje wymuszania mogą ominąć kontrole bezpieczeństwa dotyczące przestarzałych metadanych, niezsynchronizowanej parzystości, brakujących zapisów lub aktywnych pul; przed ich użyciem sprawdź i zachowaj dowody.

Jak odróżnić uszkodzony kabel SATA od uszkodzonego dysku NAS
Śledź, czy błędy dotyczą dysku, czy pozostają na ścieżce SATA, i oddziel liczniki transportu od dowodów stanu nośnika przed wymianą sprzętu.

