Jak sprawdzić skonsolidowaną bibliotekę zdjęć pod kątem uszkodzonych plików
Aby sprawdzić skonsolidowaną bibliotekę zdjęć, przeskanuj każdy obraz dekoderem odczytującym dane obrazu, zapisz raport o plikach, których odczyt kończy się niepowodzeniem lub wyświetla ostrzeżenia, a następnie sprawdź każdy z tych plików osobno, zanim cokolwiek zastąpisz lub przywrócisz. Szybkie sprawdzenie miniatury lub rozmiaru pliku może wykryć oczywiste problemy, ale nie pozwala ustalić, czy można odczytać cały obraz. W tym poradniku używamy polecenia ImageMagick magick identify; jest on przeznaczony do bibliotek przechowywanych na dysku lokalnym lub zamontowanym.
Co można, a czego nie można ustalić podczas sprawdzania uszkodzeń
Plik może mieć znane rozszerzenie i wiarygodny rozmiar, a mimo to zawierać ucięte lub uszkodzone dane obrazu. Z kolei plik, który otwiera się w jednej przeglądarce, może nadal wywoływać ostrzeżenia lub nie otwierać się w innym dekoderze. Skan pokazuje, jak jedno narzędzie odczytuje plik; nie dowodzi, że każdy piksel wygląda prawidłowo ani że każda aplikacja zinterpretuje plik w ten sam sposób.
Polecenie ImageMagick magick identify raportuje właściwości obrazu i może zgłaszać niekompletne lub uszkodzone pliki. Aby przeprowadzić miarodajną kontrolę, użyj +ping, by zażądać pełnego odczytu: dokumentacja ImageMagick wyjaśnia, że domyślny tryb ping odczytuje tylko informacje potrzebne do podstawowej identyfikacji i może nie odczytać całego obrazu. Dodaj -regard-warnings, aby ostrzeżenia wpływały na kod zakończenia polecenia. Dokumentacja ImageMagick Identify, Podstawowe użycie ImageMagick
Traktuj wynik jako wstępną selekcję. Zgłoszone ostrzeżenie wymaga sprawdzenia, ale samo w sobie nie dowodzi, że zdjęcie jest bezużyteczne. Czysty wynik skanowania oznacza, że ten dekoder zakończył odczyt bez zgłoszenia problemu, a nie że obraz wygląda prawidłowo lub że wszystkie szczegóły właściwe dla danego formatu pliku są poprawne.
Przygotuj bibliotekę przed skanowaniem
Zacznij od stabilnej kopii lub kopii zapasowej. Nie naprawiaj ani nie konwertuj jedynej kopii pliku: niektóre próby odzyskiwania mogą zmienić dane, a przerwane zapisywanie może jeszcze bardziej uszkodzić plik. Jeśli skonsolidowana biblioteka obejmuje kilka dysków lub folderów, zanotuj wszystkie katalogi główne, które chcesz uwzględnić.
Zamknij programy, które importują, edytują lub synchronizują kolekcję. Ograniczy to ryzyko zmiany pliku w trakcie skanowania. Upewnij się, że zamontowane dyski są dostępne, a konto używane do skanowania ma do nich uprawnienia do odczytu. Błąd uprawnień lub odłączony wolumin oznacza, że dany obszar nie został przeskanowany, a nie że wynik jest czysty.
Zainstaluj ImageMagick z oficjalnej dystrybucji dla swojego systemu operacyjnego, a następnie sprawdź w terminalu, czy polecenie magick jest dostępne. Najpierw przetestuj je na kilku znanych obrazach. Nazewnictwo poleceń ImageMagick dotyczy wersji 7; starsze instalacje mogą używać innych nazw. Brak polecenia lub błąd nieobsługiwanego formatu nie świadczy o tym, że plik jest uszkodzony.
Uruchom pełne skanowanie i zapisz raport
W systemach macOS lub Linux Bash może rekursywnie przeszukać bibliotekę i zapisać błędy oraz ostrzeżenia w osobnym dzienniku. Zastąp /path/to/photo-library i ścieżkę raportu właściwymi lokalizacjami. Zapisz raport poza skanowaną biblioteką, aby skan nie potraktował go jako obrazu.
: > "$HOME/photo-scan-errors.log"
find "/path/to/photo-library" -type f -print0 |
while IFS= read -r -d '' file; do
if ! magick identify +ping -regard-warnings "$file" >/dev/null 2>>"$HOME/photo-scan-errors.log"; then
printf '%s\n' "$file"
fi
done
Terminal wyświetla ścieżki plików, których sprawdzanie zakończyło się niepowodzeniem; dziennik zapisuje komunikaty diagnostyczne z ImageMagick. Pętla obejmuje wszystkie pliki, dlatego mogą się wśród nich znaleźć również pliki nierozpoznane jako obrazy. Jest to spodziewane, jeśli biblioteka zawiera pliki poboczne, dokumenty lub inne treści niebędące obrazami. W archiwum mieszanym traktuj komunikat „unknown format” oddzielnie od błędu dekodera i w razie potrzeby zawęź skanowanie do znanych rozszerzeń obrazów. Filtrowanie po rozszerzeniach może pominąć obrazy o nietypowych nazwach lub bez rozszerzeń.
Jeśli dziennik jest pusty i nie wyświetlono żadnych ścieżek, podczas tego skanowania dekoder nie zgłosił diagnostyki ani błędów. Sprawdź, czy ścieżka główna była poprawna i czy skanowanie dobiegło końca; pusty raport wynikający z literówki, niedostępnego dysku lub przerwanego polecenia nie oznacza zaliczonej kontroli. W przypadku bardzo dużych bibliotek skanuj po jednym folderze lub dysku i opisuj każdy raport, aby wiedzieć, co dokładnie objęto kontrolą.
Bezpiecznie sprawdź każdy oznaczony plik
Użyj wyświetlonej ścieżki, aby znaleźć oryginał, a następnie uruchom kontrolę tylko dla tego pliku, by uzyskać dokładniejszy komunikat diagnostyczny: magick identify +ping -regard-warnings "/full/path/to/file.jpg". Zapisz komunikat i porównaj go z zachowaniem drugiej przeglądarki lub edytora. Sprawdź, czy plik wyświetla się w całości, tylko częściowo, czy wcale. Pamiętaj, że aplikacja może pokazywać osadzony podgląd, nawet gdy główne dane obrazu są uszkodzone.
W notatkach rozróżnij trzy przypadki: plik, którego nie można zdekodować; plik dekodowany z ostrzeżeniem; oraz plik, który daje się zdekodować, ale wygląda na niekompletny lub wizualnie uszkodzony. Dzięki temu dalsze działania będą bardziej użyteczne niż przy traktowaniu wszystkich ostrzeżeń jednakowo. Formaty wieloklatkowe, takie jak GIF lub TIFF, mogą zawierać kilka obrazów w jednym pliku; sprawdź odpowiednie klatki lub strony, jeśli problem pojawia się dopiero po pierwszej.
Wybierz sposób odzyskiwania bez nadpisywania źródła
Jeśli istnieje inna kopia, porównaj ją przed próbą naprawy. Suma kontrolna pliku pozwala ustalić, czy dwie kopie mają identyczną zawartość: Microsoft wyjaśnia, że zgodne sumy kontrolne oznaczają identyczną zawartość plików, a różne nazwy lub rozszerzenia nie wpływają na sumę. Na przykład PowerShell Get-FileHash domyślnie używa SHA-256. Microsoft Learn: Get-FileHash
Zgodne sumy kontrolne potwierdzają, że dwie kopie są identyczne bajt po bajcie; nie dowodzą, że którakolwiek z nich jest sprawna. Jeśli obie kopie zawodzą w ten sam sposób, poszukaj innej kopii zapasowej lub źródła oryginalnego. Jeśli jedna działa, a druga nie, zachowaj sprawną kopię i zastąp uszkodzoną dopiero po potwierdzeniu, że pliki przedstawiają to samo zamierzone zdjęcie. Zachowaj oznaczony plik źródłowy, dopóki nie zweryfikujesz kopii zastępczej.
Jeśli nie ma dostępnej sprawnej kopii, przed użyciem narzędzia do odzyskiwania właściwego dla danego formatu utwórz osobną kopię oznaczonego pliku. Ponownie sprawdź odzyskany plik od początku, otwórz go w przeglądarce i porównaj wymiary lub inne oczekiwane właściwości. ExifTool informuje, że nie jest przeznaczony do walidacji obrazów; jego kontrole -validate zapewniają dodatkowe sprawdzenia głównie dla JPEG i TIFF, więc używaj go jako narzędzia uzupełniającego diagnostykę, a nie uniwersalnego testu zaliczenia lub niezaliczenia. FAQ ExifTool: Czy można używać ExifTool do walidacji obrazów?
Potwierdź zakres kontroli i zachowaj przydatny zapis
Zanim uznasz audyt za zakończony, upewnij się, że uwzględniono wszystkie zamierzone foldery, skanowanie dobiegło końca i zapisano raport. Osobno przeanalizuj komunikaty dotyczące nieczytelnego dysku, problemu z uprawnieniami, nieobsługiwanego formatu lub brakującego dekodera; nie traktuj ich jak potwierdzonych błędów odczytu obrazu. Ponownie sprawdź przywrócone pliki i przejrzyj próbkę kolekcji w przeglądarce obrazów, zwracając szczególną uwagę na oznaczone pliki i pliki wieloklatkowe.
Zapisz datę skanowania, wersję ImageMagick, przeskanowane foldery i dziennik błędów w notatkach dotyczących konserwacji. Taki zapis pozwala porównywać przyszłe skanowania i odróżniać stare ostrzeżenie od nowego problemu z odczytem. Dokładna kontrola obejmuje pełny odczyt dekoderem, celową weryfikację wizualną i sprawdzenie każdej kopii zastępczej; żadne pojedyncze polecenie nie podejmie tych decyzji za Ciebie.
