Come ho migrato 14.000 foto su ZimaCube 2 senza alcuna perdita di dati — Una guida alla migrazione con Immich

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

💡 Spotlight della community: u/Ambitious_Shallot_79, r/minilab

Hai una libreria fotografica. Anni di ricordi. Album che hai organizzato con cura. Volti che hai taggato. Link condivisi che hai inviato alla famiglia.

Poi aggiorni il tuo NAS — e ti rendi conto che spostare i file non basta. Senza il database, perdi ogni album, ogni tag facciale, ogni ricordo che hai curato. Le foto ci sono, ma l'organizzazione è sparita.

Ho appena spostato 14.505 foto e 925 video — 134 GiB totali — da un server DIY ZimaOS al ZimaCube 2. Ogni album è sopravvissuto. Ogni tag facciale è stato mantenuto. Ogni link condiviso funziona ancora.

Ecco esattamente come l'ho fatto, cosa è quasi andato storto e cosa ha portato ZimaCube 2 che il mio vecchio setup non poteva offrire.

Perché Immich, perché ora

Immich è diventata la soluzione self-hosted per foto più usata per un motivo. Ti offre funzionalità al livello di Google Photos — riconoscimento facciale, ricerca semantica, backup automatici dal tuo telefono, album condivisi — senza inviare le tue foto al server di qualcun altro.

Ma Immich conserva la sua anima in PostgreSQL. Il database contiene album, vettori facciali, gruppi di persone, embedding CLIP per la ricerca intelligente e ogni metadato che rende la libreria tua. Sposta i file senza il database e ottieni una cartella piena di foto e un'istanza Immich vuota.

Questa migrazione aveva una regola: zero perdita di dati. Il vecchio server non sarebbe stato cancellato finché il nuovo non fosse stato verificato.

Cosa Immich conserva realmente (e perché è importante)

Prima di toccare qualsiasi file, ho mappato esattamente cosa doveva essere spostato:

Componente Posizione Contenuti Deve essere migrato?
pgdata /DATA/AppData/immich/pgdata PostgreSQL completo — album, volti, persone, metadati ✅ Critico
model-cache /DATA/AppData/immich/model-cache Modelli CLIP/riconoscimento facciale scaricati ✅ Evita di riscaricare
Libreria fotografica /DATA/Gallery/immich 14.505 foto + 925 video + miniature (134 GiB) ✅ Media attuali
Backup automatici /DATA/Gallery/immich/backups Ultimi 14 snapshot giornalieri del database 💡 Già presente
🎁 Spostare solo i file delle foto — senza la directory pgdata — ti dà tutte le tue foto ma nessuno dei tuoi album, tag facciali, persone, ricordi o link condivisi. Immich considera PostgreSQL come fonte di verità. Entrambi devono essere spostati insieme.

Immich crea anche backup automatici del database ogni giorno alle 2:00 AM, mantenendo gli ultimi 14 nella directory dei backup. Prima di eseguire un dump manuale, verifica se un backup automatico recente è già presente.

Il metodo: app Files di ZimaOS (copia LAN)

Entrambe le macchine eseguono ZimaOS sulla stessa LAN. Questo significava che potevo usare l'app Files integrata per un trasferimento diretto LAN — niente unità esterne, nessun comando SCP, nessun storage intermedio.

Passo 1: Monta la macchina sorgente

Su ZimaCube 2, apri l'app Files → + Aggiungi Archiviazione → Archiviazione LAN → inserisci l'IP locale della macchina sorgente e autentica. Il filesystem della sorgente ora appare come archiviazione navigabile su ZimaCube 2.

Passo 2: Ferma Immich sulla sorgente

Questo è il passo che la gente salta e poi si pente. Ferma Immich prima di copiare. Un'istanza PostgreSQL in esecuzione scrive continuamente — hai bisogno del database in uno stato coerente e svuotato. Sulla macchina sorgente: ZimaOS App Store → Immich → Ferma.

Passo 3: Copia entrambe le directory

Dall'app Files di ZimaCube 2, naviga alla sorgente montata e seleziona:

Percorso sorgente Percorso di destinazione su ZimaCube 2
/DATA/AppData/immich /DATA/AppData/immich
/DATA/Gallery/immich /DATA/Gallery/immich

Seleziona entrambe le posizioni, premi Migra. Scegli: Sovrascrivi a destinazione e Mantieni originali sulla sorgente — non cancellare la sorgente finché non è verificata.

Sulla connessione 2.5GbE del ZimaCube 2, 134 GiB si trasferiscono in circa 10–15 minuti. Il mio vecchio server fai-da-te era limitato a 1GbE — lo stesso trasferimento avrebbe richiesto 30–40 minuti. Questa è la differenza reale che non si vede su una scheda tecnica ma conta ogni volta che sposti dati.

Passo 4: Installa Immich su ZimaCube 2

Apri il ZimaOS App Store e cerca Immich. Avviso critico: l'App Store può mostrare più varianti di Immich. Devi installare la esatta stessa variante che usa la tua macchina sorgente:

Immich (app ufficiale ZimaOS/CasaOS) — usala se è quella che avevi prima

BigBearCasaOS Immich — variabili docker-compose diverse, credenziali postgres diverse, nome del database diverso — incompatibile con una copia diretta di pgdata dall'app ufficiale

🔑 Le variabili di docker-compose — nome utente postgres, password, nome del database, modalità di rete — sono integrate nella definizione dell'app. Qualsiasi discrepanza tra le varianti dell'app sorgente e destinazione impedirà a Immich di connettersi al database ripristinato. Questo è il punto di errore più comune nelle migrazioni di Immich.

Dopo l'installazione, non avviare subito l'app. Immich rileverà la directory pgdata esistente al primo avvio e si connetterà a essa invece di inizializzare un nuovo database vuoto.

Ricerca dell'app 'immich' nello Store ZimaOS / CasaOS durante la configurazione del NAS

Passo 5: Accedi con le credenziali esistenti

Apri Immich su http://192.168.x.x:2283 e accedi con lo stesso nome utente e password dell'istanza di origine. La tua libreria completa — album, volti, persone, impostazioni — sarà esattamente come prima.

Schermata di benvenuto dell'app Immich e pulsante per iniziare dopo la migrazione del database riuscita

Passo 6: Verifica le code di lavoro

Vai su Profilo → Amministrazione → Code di lavoro. Dopo una migrazione pgdata, il database contiene già tutti i risultati precedentemente processati, quindi la maggior parte delle code dovrebbe mostrare Attivo: 0 / In attesa: 0.

Se qualche coda mostra un conteggio sotto Missing, clicca il pulsante Missing per processare solo gli asset non elaborati:

Coda Quando eseguire Missing
Genera miniature Se alcune foto mostrano anteprime vuote
Estrai metadati Se mancano dati GPS/posizione/data agli asset
Ricerca intelligente Se la ricerca semantica non restituisce risultati
Rilevamento facciale Se i dati facciali appaiono incompleti

Statistiche della migrazione

Metrica Valore
Foto migrate 14,505
Video migrati 925
Dati totali 134 GiB
Tempo di trasferimento (2.5GbE) ~12 minuti
Album preservati Tutti
Tag facciali preservati Tutti
Link condivisi preservati Tutti
Perdita di dati Zero

Perché il ZimaCube 2 ha reso tutto questo utile

Non ho migrato solo per ritrovarmi la stessa esperienza. Il ZimaCube 2 offre tre miglioramenti che il mio vecchio box DIY ZimaOS non poteva eguagliare:

Trasferimenti 2.5GbE. Le librerie fotografiche crescono. Ogni backup completo, ogni grande importazione, ogni migrazione beneficia della larghezza di banda 2,5× superiore rispetto al gigabit standard. Il doppio 2.5GbE di ZimaCube 2 mi permette di saturare un backup mentre il resto della rete rimane reattivo.

Archiviazione NVMe per il database. Il database Immich PostgreSQL funziona molto meglio su NVMe rispetto ai dischi rigidi tradizionali. Generazione delle miniature, query di ricerca intelligente, riconoscimento facciale — tutto legge da pgdata. Nel pool NVMe di ZimaCube 2, le operazioni sul database che prima rallentavano su HDD ora sono istantanee.

Espandibilità a 6 bay. 134 GiB oggi. E l'anno prossimo? Il ZimaCube 2 ha sei bay SATA più quattro slot M.2 nel 7° bay, il che significa che questa libreria fotografica può crescere per anni senza raggiungere un limite di storage.

IceWhale ZimaCube 2 NAS a 6 bay con bay frontali hot-swap per storage self-hosted ad alte prestazioni

Migra la tua libreria fotografica su ZimaCube 2 →

Stai costruendo il tuo setup fotografico self-hosted? Leggi la nostra guida Personal Cloud Storage Device, il nostro approfondimento Docker & CI/CD su ZimaCube 2 e il nostro Unboxing ZimaCube 2 Pro.

Domande Frequenti

Posso migrare Immich sul ZimaCube 2 senza perdere album e tag facciali?

— ma devi copiare sia i file fotografici sia la directory pgdata (database PostgreSQL). Il database conserva tutti gli album, i vettori facciali, i cluster di persone e i metadati. Spostare solo le foto ti dà i file senza organizzazione. Copia entrambe le directory insieme e la tua libreria rimarrà intatta.

Qual è il modo più veloce per trasferire i dati di Immich sul ZimaCube 2?

Se entrambe le macchine sono sulla stessa LAN e usano ZimaOS, usa l'app Files integrata con montaggio LAN Storage. Tramite la connessione 2.5GbE del ZimaCube 2, 134 GiB si trasferiscono in circa 10–15 minuti. Per librerie più grandi o macchine su reti diverse, un drive USB esterno è la seconda opzione migliore.

La versione di Immich nello App Store conta durante la migrazione?

Sì — è fondamentale. Lo ZimaOS App Store può mostrare più varianti di Immich (ufficiale vs BigBearCasaOS). Usano variabili docker-compose diverse — credenziali postgres, nomi database e configurazioni di rete sono incompatibili. Installa esattamente la stessa variante usata dalla tua macchina sorgente, altrimenti il database ripristinato non si connetterà.

Devo fermare Immich sulla sorgente prima di copiare?

Sì. Un'istanza PostgreSQL in esecuzione scrive continuamente. Copiare un database attivo rischia uno stato incoerente. Ferma Immich sulla macchina sorgente, copia le cartelle, poi avvialo sulla destinazione. La macchina sorgente può rimanere spenta o accesa come backup finché non hai verificato la migrazione.

Quanta memoria richiede Immich sul ZimaCube 2?

Pianifica la dimensione della tua libreria fotografica più lo spazio per il database PostgreSQL (che cresce con la tua libreria), la cache delle miniature e le versioni video transcodificate. Una libreria da 134 GiB con 14.500 foto utilizza circa 150–160 GiB totali con overhead. I sei bay SATA del ZimaCube 2 ti offrono spazio per crescere.

Centro Campagne Zima

Altro da leggere

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.