immich-archiver: replicare la tua libreria di foto sul tuo disco

immich-archiver: replicare la tua libreria di foto sul tuo disco

PixelUnion conserva le tue foto su server europei, con ridondanza e monitoraggio. È il nostro lavoro e lo prendiamo sul serio.

Il consiglio standard per i dati a cui tieni è la regola 3-2-1: tre copie, su due tipi di archiviazione diversi, con una copia in un altro luogo. La nostra parte è coperta. Proteggiamo dai disastri, non solo dal guasto di un disco, e su questo puoi contare. Quello che non possiamo essere è una copia che sta a casa tua, su hardware tuo, leggibile senza account e senza di noi. Molte persone vogliono avere anche quella, ed è un desiderio ragionevole.

Per questo abbiamo costruito immich-archiver, uno strumento open source che replica una libreria Immich in una cartella su un disco che ti appartiene.

Cosa fa

Gli fornisci un URL del server e una chiave API utente (una chiave di application programming interface, che generi dalle impostazioni del tuo account), più una cartella di destinazione. Scarica ogni foto e ogni video della tua cronologia in cartelle per anno e mese.

1
2
3
4
5
export IMMICH_URL=https://yourinstance.pixelunion.eu
export IMMICH_API_KEY=your-user-api-key
export IMMICH_DIR=/path/to/archive

immich-archiver

Il risultato su disco:

/path/to/archive/2005/2005-06/IMG_0001.jpg
/path/to/archive/2005/2005-06/IMG_0001.jpg.json

Ogni file è affiancato da un file sidecar in JSON (JavaScript Object Notation, un formato di testo che qualsiasi strumento sa leggere) contenente l’intero record di metadati che il server possiede per quel file: data di scatto, marca e modello della fotocamera, coordinate GPS, appartenenza agli album, volti, valutazioni. Conserviamo la risposta grezza dell’API così com’è invece di un sottoinsieme selezionato, perché nel momento in cui decidi quali campi contano stai scommettendo su un futuro che non puoi vedere. L’approccio è ripreso da immich-go, che lo fa bene da anni.

Eseguilo di nuovo più avanti e scaricherà soltanto ciò che manca. Non c’è un database di stato. Controlla il filesystem e usa il sidecar per confermare che un file con nome corrispondente sia davvero lo stesso elemento, e non una foto estranea che per caso condivide il nome.

Questo design ha un costo reale, e vale la pena nominarlo. Poiché non esiste un indice, ogni esecuzione effettua una chiamata stat su ciascun file di destinazione, il che su librerie molto grandi accessibili tramite filesystem di rete è più lento della lettura di un database locale. Rinomina un file scaricato e lo strumento lo recupererà di nuovo, perché non lo riconosce più. In cambio, la cartella è la fonte di verità. Non c’è un indice separato che possa corrompersi, andare fuori sincrono, o che debba esserti spiegato quando è in disaccordo con la realtà.

Qualche altro dettaglio utile. I download vengono scritti in un file temporaneo .part e rinominati al posto definitivo solo a trasferimento completato, così un’esecuzione interrotta non lascia mai un file troncato che un’esecuzione successiva scambierebbe per completo. Le Live Photos arrivano con entrambe le componenti, l’immagine fissa e la clip in movimento, con lo stesso nome di base. Gli album condivisi con te sono esclusi per impostazione predefinita e finiscono in una cartella separata se passi --include-shared. La concorrenza e il numero di tentativi sono configurabili, con quattro download paralleli e tre tentativi in caso di errori di rete o del server come valori predefiniti.

Perché esiste, e cosa non è

La domanda dietro questo strumento ci arriva con regolarità: se PixelUnion sparisse, che fine fanno le mie foto? La risposta onesta era finora “esportale”, che non è una risposta quando la via di esportazione consiste nello scaricare diecimila file da un browser, album per album. Un backup che dipende dal fatto che tu ti ricordi di svolgere un compito manuale noioso non è un backup. È un compito che salterai.

Questo è uno strumento a riga di comando, o command-line interface, abbreviato in CLI. Ti servono un terminale, una chiave API e sufficiente dimestichezza con entrambi per inserirlo in un cron job o in un’attività pianificata. Questo esclude molte persone, e non fingeremo il contrario.

Dove vogliamo arrivare è un pulsante di download dentro PixelUnion. Ci clicchi, noi prepariamo un archivio, ricevi un link, tutto arriva in un unico file. Più vicino a quello che fa Google Takeout, senza la parte in cui ci mette una settimana e arriva incompleto. È un lavoro sensibilmente più grande, è nella roadmap, e non esce questo mese.

Quindi abbiamo fatto una scelta, ed è quella ovvia: rilasciare ora lo strumento che funziona per chi può usarlo, invece di non coprire nessuno mentre si costruisce la versione più accessibile. immich-archiver è il passaggio intermedio. Se te la cavi con un terminale, non devi aspettare.

Dove trovarlo

Il repository si trova su github.com/pixelunioneu/immich-archiver, con licenza AGPL-3.0 (la GNU Affero General Public License, versione 3). Ogni release fornisce binari precompilati per Linux, Windows e macOS, sia in x86-64 sia in ARM64, così i Mac con Apple Silicon ricevono una build nativa anziché una tradotta.

I binari macOS sono firmati con un certificato Developer ID e notarizzati presso Apple, il che permette a Gatekeeper di eseguirli senza l’avviso relativo a uno sviluppatore non identificato. Conta più di quanto sembri: il rimedio abituale per gli strumenti non firmati è dire agli utenti di rimuovere l’attributo di quarantena da un binario scaricato, e questo addestra le persone ad aggirare proprio il controllo che le protegge. La release più recente è sempre quella da prendere.

Questa è una prima release. Il nucleo è solido e testato, ma non ha ancora incontrato la varietà di librerie che hanno gli utenti reali, ed è lì che strumenti del genere di solito si rompono. Issue e pull request sono benvenute, in particolare quelle che iniziano con “ha fatto qualcosa di strano con la mia…”.

Un pensiero conclusivo, perché vale ben oltre questo strumento. Un backup da cui non hai mai ripristinato non è un backup, è un’ipotesi. Eseguilo una volta, apri la cartella, verifica che una foto si apra davvero. Poi pianificalo e smetti di pensarci.

Inizia gratis con PixelUnion →