Naprawa i odzyskiwanie uszkodzonych katalogów Lightrooma

lr_catalog_brokenJeśli pracujesz z Adobe Photoshop Lightroomem na co dzień, to prędzej czy później może Cię spotkać niemiła niespodzianka w postaci uszkodzonego katalogu Lightrooma – bazy danych o keywordsach, danych meta i operacjach jakie wykonywałeś podczas obróbki na zdjęciach. Jednym słowem tracisz całą pracę nad obróbką swoich fotek. Jeśli wykonujesz na bieżąco kopie zapasowe (np. przy zamknięciu programu), to jeszcze pół biedy, zawsze można odzyskać pracę z ostatniego backupu. Problem zaczyna się, gdy np. ostatni backup zrobiliśmy tydzień, miesiąc temu, albo nawet wczoraj, ale później obrobiliśmy np 500 zdjęć i dziś po otwarciu programu okazuje się, że katalog jest uszkodzony, a backupu nie ma.

Oczywiście najlepiej jest zapobiegać niż leczyć. Na własnej skórze nauczyłem się robić archiwizację bazy lightroomowej za każdym razem po wyjściu z programu pomimo, że trwa to co raz dłuuuużej (obecnie jeden z moich katalogów lrcat waży ponad 5GB). Wielu z Was powie, że to przesada tak często backupować, że wystarczy max raz na dzień itd. Jednak trafił mi się przypadek, w którym „raz na dzień” okazał się za mało i po uszkodzeniu bazy byłem kilkanaście godzin pracy i kilkaset obrobionych zdjęć do tyłu.

Jeśli już stało się tak, że nasz katalog uległ awarii i Lightroom nie jest w stanie go otworzyć, a nasze backupy są stare, lub co gorsze nie mamy ich w ogóle, to mimo wszystko jest jeszcze szansa na uratowanie katalogu lub przynajmniej jego części. Poniżej przedstawiam procedurę, która w większości przypadków ratuje sytuację.

  1. Jeśli Lightroom informuje o uszkodzonym katalogu, to NIE klikajmy w przycisk REPAIR.
  2. Koniecznie skopiuj uszkodzony plik katalogu – bazy danych  (twoja_nazwa.lrcat) w bezpieczne miejsce na dysku. W moim przypadku było tak, że pliku nie można było skopiować, ponieważ Windows informował o uszkodzonej strukturze. Z pomocą przyszedł Linux, (można skorzystać z dowolnej dystrybucji live uruchamianej np. z pendrive’a), który de facto też potwierdził uszkodzenie pliku, ale skopiował go „tak jak jest”, czego Windows już nie uczyni. WAŻNE abyś nie próbował naprawiać struktury plików za pomocą windowsowych a najlepiej jakichkolwiek narzędzi. Co prawda system potwierdzi, że plik został naprawiony, ale okaże się, że nagle zajmuje 0 bajtów – i to będzie koniec (przetestowane organoleptycznie).
  3. Jeśli posiadamy już kopię naszej uszkodzonej bazy, to możemy pobrać silnik baz danych SQLite3 ze strony: http://www.sqlite.org/download.html . Lightroom wykorzystuje ten opensource’owy system baz danych do tworzenia i zarządzania katalogami. Jeśli używasz Windowsa, to ściągnij prekompilowaną binarkę SQLite (Precompiled Binaries for Windows), jak masz Mac OS, to odpowiednią wersję dla Maka.
  4. Rozpakuj ściągnięte archiwum SQLite np. na dysk D:\ , pojawi się plik sqlite.exe lub sqlite3.exe.
  5. Uruchom wiersz poleceń Windows (wpisz w pasku uruchamiania/wyszukiwania cmd lub command), w OS X uruchom terminal.
  6. Po pojawieniu się okienka konsoli należy przejść do folderu, gdzie rozpakowaliśmy sqlite. Jeśli jest to dysk D, to wpisujemy (obowiązują komendy DOS)
    cd D:\sqlite
  7. Następnie robimy zrzut bazy danych Lightrooma do czystego pliku SQL wpisując poniższe polecenie, przy czym D:\katalogi_lightrooma to pełna ścieżka do miejsca na dysku, gdzie są Twoje katalogi Ligtrooma (lub kopia uszkodzonego katalogu), zapewne jest ona inna niż na moim przykładzie. mojkatalog.lrcat to nazwa mojego uszkodzonego katalogu. TmpMojKatalog.sql to nazwa dla pliku, który będzie zrzutem bazy danych. Zostanie on utworzony podczas wykonywania zrzutu (dump). Jeśli przed tą nazwą nic nie podamy, to domyślna ścieżka będzie tam, gdzie jest plik sqlite3.exe, czyli w moim przykładzie na dysku D:\
    echo .dump | sqlite3 D:\katalogi_lightrooma\mojkatalog.lrcat > TmpMojKatalog.sql
  8. W moim przypadku konwertowanie trwało ok 40min. (plik .lrcat ponad 5GB), więc nie należy przerywać jeśli nie będą pojawiały się na ekranie żadne informacje. Można uruchomić manager zadań i monitorować pracę procesu sqlite3 i/lub dysku twardego.
  9. Kolejnym krokiem jest utworzenie nowej bazy danych z wykonanego zrzutu do pliku SQL. Wpisujemy w terminalu polecenie:
    sqlite3 -init TmpMojKatalog.sql odzyskanyMojKatalog.lrcat
  10. Po ukończeniu operacji możemy przekopiować plik odzyskanyMojKatalog.lrcat do folderu z katalogami Lightrooma i otworzyć go w programie.

W większości przypadków procedura ta pozwala na 100% odzyskanie danych z uszkodzonej bazy danych. Czasami może przydarzyć się takie „zgruzowanie” bazy danych, że odzyskamy tylko część naszej ostatniej pracy lub np. będą błędnie oflagowane zdjęcia (u mnie wszystkie zostały oznaczone jako rejected).

Powodzenia w odzyskiwaniu utraconych godzin pracy i mam nadzieję, że ten poradnik nigdy nie będzie Wam potrzebny :)

9 komentarzy na temat “Naprawa i odzyskiwanie uszkodzonych katalogów Lightrooma

  1. Witam, dziś mi nagle wyłączył sie komputer i mam ten problem.

    jestem w etapie 6, ale w cmd pokazuje mi, ze nie można znaleźć określonej ścieżki, co robię źle?

      • wrzuciłem bez folderu na dysk D i w cmd wpisuje komendę ‚ cd D:\sqlite ‚ i wyświetla komunikat : ‚ ‚ system nie może znaleźć określonej ścieżki ‚

        • u mnie sqlite.exe znajduje się w D:\sqlite\
          cd służy do przechodzenia do wybranego katalogu (Change Directory).
          Jeżeli u Ciebie sqlite.exe leży na dysku D, bez podkatalogów, to wystarczy w takim razie cd D:
          Dalej komendy bez zmian.

          • ok działa :)
            tylko nie mogę zrobić w cmd takiej kreski | tworzy się, ale ta z przerwa.
            Jak wpisze kolejna komendę wykasuje: Nazwa sqlite3 nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy

    • Usunąć można i utworzyć nowy katalog (LR zapyta się stworzenie nowego, jeśli nie odnajdzie żadnego katalogu). Proszę pamiętać, że utraci się wówczas wszystkie ustawienia dla zdjęć.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *