Jak przeniosłem 14 000 zdjęć na ZimaCube 2 bez utraty danych — przewodnik po migracji Immich

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

💡 Spojrzenie społeczności: u/Ambitious_Shallot_79, r/minilab

Masz bibliotekę zdjęć. Lata wspomnień. Albumy, które starannie organizowałeś. Twarze, które oznaczyłeś. Udostępnione linki, które wysłałeś rodzinie.

Następnie aktualizujesz swój NAS — i zdajesz sobie sprawę, że samo przeniesienie plików to za mało. Bez bazy danych tracisz każdy album, każdy tag twarzy, każde wspomnienie, które stworzyłeś. Zdjęcia są, ale organizacja zniknęła.

Właśnie przeniosłem 14 505 zdjęć i 925 filmów — łącznie 134 GiB — z serwera DIY ZimaOS na ZimaCube 2. Każdy album przetrwał. Każdy tag twarzy został zachowany. Każdy udostępniony link nadal działa.

Oto dokładnie jak to zrobiłem, co prawie poszło nie tak i co ZimaCube 2 wniosło, czego mój stary zestaw nie mógł.

Dlaczego Immich, dlaczego teraz

Immich stał się popularnym rozwiązaniem do samodzielnego hostowania zdjęć nie bez powodu. Oferuje funkcje na poziomie Google Photos — rozpoznawanie twarzy, wyszukiwanie semantyczne, automatyczne kopie zapasowe z telefonu, udostępnione albumy — bez wysyłania Twoich zdjęć na serwer kogoś innego.

Ale Immich przechowuje swoją duszę w PostgreSQL. Baza danych zawiera albumy, wektory twarzy, klastry osób, osadzenia CLIP do inteligentnego wyszukiwania oraz każdy fragment metadanych, który sprawia, że biblioteka jest Twoja. Przenieś pliki bez bazy danych, a otrzymasz folder pełen zdjęć i pustą instancję Immich.

Ta migracja miała jedną zasadę: zero utraty danych. Stary serwer nie został wyczyszczony, dopóki nowy nie został zweryfikowany.

Co Immich faktycznie przechowuje (i dlaczego to ważne)

Zanim dotknąłem jakichkolwiek plików, dokładnie zaplanowałem, co trzeba przenieść:

Komponent Lokalizacja Zawartość Czy trzeba migrować?
pgdata /DATA/AppData/immich/pgdata Pełny PostgreSQL — albumy, twarze, osoby, metadane ✅ Krytyczne
model-cache /DATA/AppData/immich/model-cache Pobrane modele CLIP/rozpoznawania twarzy ✅ Oszczędza ponowne pobieranie
Biblioteka zdjęć /DATA/Gallery/immich 14 505 zdjęć + 925 filmów + miniatury (134 GiB) ✅ Aktualne media
Automatyczne kopie zapasowe /DATA/Gallery/immich/backups Ostatnie 14 codziennych migawkek bazy danych 💡 Już obecne
🎁 Przenoszenie tylko plików zdjęć — bez katalogu pgdata — daje Ci wszystkie zdjęcia, ale żadne z albumów, tagów twarzy, osób, wspomnień ani udostępnionych linków. Immich traktuje PostgreSQL jako źródło prawdy. Oba muszą być przenoszone razem.

Immich tworzy również automatyczne kopie zapasowe bazy danych codziennie o 2:00 rano, przechowując ostatnie 14 w katalogu kopii zapasowych. Przed wykonaniem ręcznego zrzutu sprawdź czy nie ma już tam niedawnej automatycznej kopii zapasowej.

Metoda: Aplikacja Pliki ZimaOS (kopiowanie przez LAN)

Obie maszyny działają na ZimaOS w tej samej sieci LAN. To oznaczało, że mogłem użyć wbudowanej aplikacji Pliki do bezpośredniego transferu przez LAN — bez zewnętrznych dysków, bez poleceń SCP, bez pośredniego magazynu.

Krok 1: Zamontuj maszynę źródłową

Na ZimaCube 2 otwórz aplikację Pliki → + Dodaj magazyn → Magazyn LAN → wpisz lokalny adres IP maszyny źródłowej i uwierzytelnij się. System plików maszyny źródłowej pojawi się teraz jako przeglądany magazyn na ZimaCube 2.

Krok 2: Zatrzymaj Immich na źródle

To jest krok, który ludzie pomijają i potem żałują. Zatrzymaj Immich przed kopiowaniem. Działający PostgreSQL ciągle zapisuje — potrzebujesz bazy w spójnym, wypłukanym stanie. Na maszynie źródłowej: ZimaOS App Store → Immich → Zatrzymaj.

Krok 3: Skopiuj oba katalogi

W aplikacji Pliki na ZimaCube 2 przejdź do zamontowanego źródła i wybierz:

Ścieżka źródłowa Ścieżka docelowa na ZimaCube 2
/DATA/AppData/immich /DATA/AppData/immich
/DATA/Gallery/immich /DATA/Gallery/immich

Wybierz oba miejsca, kliknij Migracja. Wybierz: Nadpisz w miejscu docelowym i Zachowaj oryginały u źródła — nie usuwaj źródła, dopóki nie zweryfikujesz.

Przez połączenie 2.5GbE ZimaCube 2, transfer 134 GiB zajmuje około 10–15 minut. Mój stary serwer DIY miał 1GbE — ten sam transfer trwałby 30–40 minut. To jest różnica, której nie widać w specyfikacji, ale ma znaczenie za każdym razem, gdy przenosisz dane.

Krok 4: Zainstaluj Immich na ZimaCube 2

Otwórz ZimaOS App Store i wyszukaj Immich. Ostrzeżenie krytyczne: w App Store może być kilka wariantów Immich. Musisz zainstalować dokładnie ten sam wariant, którego używa twoja maszyna źródłowa:

Immich (oficjalna aplikacja ZimaOS/CasaOS) — użyj tego, jeśli to właśnie miałeś wcześniej

BigBearCasaOS Immich — różne zmienne docker-compose, różne dane logowania do postgres, inna nazwa bazy danych — niekompatybilne z bezpośrednią kopią pgdata z oficjalnej aplikacji

🔑 Zmienne docker-compose — nazwa użytkownika postgres, hasło, nazwa bazy danych, tryb sieci — są wbudowane w definicję aplikacji. Każda niezgodność między wariantami aplikacji źródłowej i docelowej uniemożliwi Immich połączenie się z przywróconą bazą danych. To jest najczęstszy punkt awarii podczas migracji Immich.

Po instalacji nie uruchamiaj aplikacji od razu. Immich przy pierwszym uruchomieniu wykryje istniejący katalog pgdata i połączy się z nim zamiast inicjować nową, pustą bazę danych.

Wyszukiwanie aplikacji 'immich' w sklepie ZimaOS / CasaOS podczas konfiguracji NAS

Krok 5: Zaloguj się istniejącymi danymi

Otwórz Immich pod adresem http://192.168.x.x:2283 i zaloguj się tym samym nazwą użytkownika i hasłem co w instancji źródłowej. Twoja pełna biblioteka — albumy, twarze, osoby, ustawienia — będzie dokładnie taka sama jak wcześniej.

Ekran powitalny aplikacji Immich i przycisk rozpoczęcia po pomyślnej migracji bazy danych

Krok 6: Zweryfikuj kolejki zadań

Przejdź do Profil → Administracja → Kolejki zadań. Po migracji pgdata baza danych zawiera już wszystkie wcześniej przetworzone wyniki, więc większość kolejek powinna pokazywać Aktywne: 0 / Oczekujące: 0.

Jeśli któraś kolejka pokazuje liczbę poniżej Brakujące, kliknij przycisk Brakujące, aby przetworzyć tylko nieprzetworzone zasoby:

Kolejka Kiedy uruchomić brakujące
Generuj miniatury Jeśli jakieś zdjęcia pokazują puste podglądy
Wyodrębnij metadane Jeśli zasoby nie mają GPS/lokalizacji/dat
Inteligentne wyszukiwanie Jeśli inteligentne wyszukiwanie nie zwraca wyników
Wykrywanie twarzy Jeśli dane twarzy wydają się niekompletne

Statystyki migracji

Metryka Wartość
Przeniesione zdjęcia 14,505
Przeniesione filmy 925
Całkowite dane 134 GiB
Czas transferu (2,5GbE) ~12 minut
Albumy zachowane Wszystko
Tagi twarzy zachowane Wszystko
Udostępnione linki zachowane Wszystko
Utraty danych Zero

Dlaczego ZimaCube 2 sprawił, że to było warte zrobienia

Nie migrowałem tylko po to, by mieć to samo doświadczenie. ZimaCube 2 oferuje trzy ulepszenia, których mój stary, samodzielnie zbudowany ZimaOS nie mógł zapewnić:

Transfery 2,5GbE. Biblioteki zdjęć rosną. Każda pełna kopia zapasowa, każdy duży import, każda migracja korzysta z 2,5× większej przepustowości niż standardowy gigabit. Podwójne 2,5GbE w ZimaCube 2 pozwala mi nasycić transfer kopii zapasowej, podczas gdy reszta sieci pozostaje responsywna.

NVMe storage dla bazy danych. Baza danych Immich PostgreSQL działa znacznie lepiej na NVMe niż na tradycyjnych dyskach talerzowych. Generowanie miniatur, inteligentne zapytania wyszukiwania, rozpoznawanie twarzy — wszystko to odczytuje dane z pgdata. Na pulpicie NVMe ZimaCube 2 operacje na bazie danych, które wcześniej przycinały na HDD, są teraz natychmiastowe.

Rozbudowa do 6 zatok. Dziś 134 GiB. A co za rok? ZimaCube 2 ma sześć zatok SATA oraz cztery sloty M.2 w 7. zatoce, co oznacza, że ta biblioteka zdjęć może rosnąć przez lata bez ograniczeń pojemności.

IceWhale ZimaCube 2 6-zatokowy NAS z przednimi zatokami hot-swap dla wysokowydajnej, samodzielnie hostowanej pamięci masowej

Przenieś swoją bibliotekę zdjęć na ZimaCube 2 →

Budujesz własne rozwiązanie do hostowania zdjęć? Przeczytaj nasz przewodnik Personal Cloud Storage Device, dogłębną analizę Docker & CI/CD na ZimaCube 2 oraz nasz ZimaCube 2 Pro Unboxing.

Najczęściej zadawane pytania

Czy mogę przenieść Immich na ZimaCube 2 bez utraty albumów i tagów twarzy?

Tak — ale musisz skopiować zarówno pliki zdjęć, jak i katalog pgdata (baza danych PostgreSQL). Baza przechowuje wszystkie albumy, wektory twarzy, klastry osób i metadane. Przeniesienie samych zdjęć daje tylko pliki bez organizacji. Skopiuj oba katalogi razem, a Twoja biblioteka pozostanie nienaruszona.

Jaki jest najszybszy sposób na przeniesienie danych Immich na ZimaCube 2?

Jeśli obie maszyny są w tej samej sieci LAN i działają na ZimaOS, użyj wbudowanej aplikacji Files z montowaniem pamięci LAN. Przez połączenie 2,5 GbE ZimaCube 2, transfer 134 GiB zajmuje około 10–15 minut. Dla większych bibliotek lub maszyn w różnych sieciach, najlepszą opcją jest zewnętrzny dysk USB.

Czy wersja Immich ze sklepu App Store ma znaczenie przy migracji?

Tak — to krytyczne. Sklep z aplikacjami ZimaOS może pokazywać różne warianty Immich (oficjalny vs BigBearCasaOS). Używają one różnych zmiennych docker-compose — dane uwierzytelniające postgres, nazwy baz danych i konfiguracje sieci są niekompatybilne. Zainstaluj dokładnie ten sam wariant, którego używa maszyna źródłowa, inaczej przywrócona baza danych nie połączy się.

Czy muszę zatrzymać Immich na maszynie źródłowej przed kopiowaniem?

Tak. Działająca instancja PostgreSQL zapisuje dane ciągle. Kopiowanie działającej bazy danych grozi niespójnym stanem. Zatrzymaj Immich na maszynie źródłowej, skopiuj foldery, a następnie uruchom go na maszynie docelowej. Maszyna źródłowa może pozostać wyłączona lub działać jako kopia zapasowa, dopóki nie zweryfikujesz migracji.

Ile miejsca na dane potrzebuje Immich na ZimaCube 2?

Zaplanuj rozmiar swojej biblioteki zdjęć oraz miejsce na bazę danych PostgreSQL (która rośnie wraz z biblioteką), pamięć podręczną miniatur i transkodowane wersje wideo. Biblioteka o wielkości 134 GiB z 14 500 zdjęciami zajmuje łącznie około 150–160 GiB z narzutem. Sześć zatok SATA w ZimaCube 2 daje Ci miejsce na rozbudowę.

Centrum Kampanii Zima

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.