immich-archiver: Ihre Fotobibliothek auf Ihre eigene Festplatte spiegeln

PixelUnion speichert Ihre Fotos auf europäischen Servern, mit Redundanz und Monitoring. Das ist unsere Aufgabe, und wir nehmen sie ernst.
Der Standardrat für Daten, die Ihnen wichtig sind, lautet 3-2-1: drei Kopien, auf zwei verschiedenen Speichertypen, mit einer Kopie an einem anderen Ort. Unsere Seite davon ist abgedeckt. Wir schützen vor Katastrophen, nicht nur vor einer ausgefallenen Festplatte, und darauf können Sie sich verlassen. Was wir nicht sein können, ist eine Kopie bei Ihnen zu Hause, auf Hardware, die Ihnen gehört, lesbar ohne Konto und ohne uns. Viele Menschen möchten das zusätzlich haben, und das ist ein vernünftiger Wunsch.
Deshalb haben wir immich-archiver gebaut, ein Open-Source-Tool, das eine Immich-Bibliothek in einen Ordner auf einem Laufwerk spiegelt, das Ihnen gehört.
Was es tut
Sie geben ihm eine Server-URL und einen Benutzer-API-Schlüssel (einen Application-Programming-Interface-Schlüssel, den Sie in Ihren Kontoeinstellungen erzeugen) sowie ein Zielverzeichnis. Es lädt jedes Foto und Video Ihrer Zeitleiste in Ordner nach Jahr und Monat herunter.
| |
Das Ergebnis auf der Festplatte:
/path/to/archive/2005/2005-06/IMG_0001.jpg
/path/to/archive/2005/2005-06/IMG_0001.jpg.json
Neben jeder Datei liegt eine Sidecar-Datei im JSON-Format (JavaScript Object Notation, ein Klartextformat, das jedes Werkzeug lesen kann) mit dem vollständigen Metadatensatz, den der Server zu dieser Datei hat: Aufnahmedatum, Kamerahersteller und Modell, GPS-Koordinaten, Albumzugehörigkeit, Gesichter, Bewertungen. Wir speichern die rohe API-Antwort wortgetreu statt einer ausgewählten Teilmenge, denn in dem Moment, in dem Sie entscheiden, welche Felder zählen, raten Sie über eine Zukunft, die Sie nicht sehen können. Der Ansatz ist von immich-go übernommen, das genau das seit Jahren gut macht.
Beim nächsten Lauf lädt es nur herunter, was fehlt. Es gibt keine Zustandsdatenbank. Es prüft das Dateisystem und nutzt die Sidecar-Datei, um zu bestätigen, dass eine Datei mit passendem Namen tatsächlich dasselbe Objekt ist und nicht ein fremdes Foto, das zufällig denselben Dateinamen trägt.
Dieses Design hat einen echten Preis, und der gehört benannt. Weil es keinen Index gibt, führt jeder Lauf einen Stat-Aufruf auf jede Zieldatei aus, was bei sehr großen Bibliotheken über ein Netzwerkdateisystem langsamer ist als das Lesen einer lokalen Datenbank. Benennen Sie eine heruntergeladene Datei um, lädt das Tool sie erneut, weil es sie nicht mehr erkennt. Im Gegenzug ist der Ordner die einzige Quelle der Wahrheit. Es gibt keinen separaten Index, der beschädigt werden, aus dem Takt geraten oder Ihnen erklärt werden muss, wenn er der Realität widerspricht.
Ein paar weitere Details lohnen sich. Downloads werden in eine temporäre .part-Datei geschrieben und erst nach abgeschlossener Übertragung an ihren Platz umbenannt, sodass ein abgebrochener Lauf nie eine abgeschnittene Datei hinterlässt, die ein späterer Lauf für vollständig hält. Live Photos kommen mit beiden Bestandteilen an, dem Standbild und dem Bewegtclip, unter gemeinsamem Basisdateinamen. Mit Ihnen geteilte Alben bleiben standardmäßig außen vor und landen in einem eigenen Ordner, wenn Sie --include-shared übergeben. Parallelität und Wiederholungsversuche sind konfigurierbar, voreingestellt sind vier parallele Downloads und drei Wiederholungen bei Netzwerk- oder Serverfehlern.
Warum es existiert, und was es nicht ist
Die Frage hinter diesem Tool erreicht uns regelmäßig: Wenn PixelUnion verschwände, was passiert dann mit meinen Fotos? Die ehrliche Antwort lautete bisher “exportieren Sie sie”, und das ist keine Antwort, wenn der Exportweg bedeutet, zehntausend Dateien über einen Browser herunterzuladen, Album für Album. Ein Backup, das davon abhängt, ob Sie an eine lästige manuelle Aufgabe denken, ist kein Backup. Es ist eine Aufgabe, die Sie auslassen werden.
Dies ist ein Command-Line-Interface-Tool, meist als CLI abgekürzt. Sie brauchen ein Terminal, einen API-Schlüssel und genug Vertrautheit mit beidem, um es in einen Cronjob oder eine geplante Aufgabe zu legen. Das schließt viele Menschen aus, und wir tun nicht so, als wäre es anders.
Wo wir landen wollen, ist ein Download-Button in PixelUnion selbst. Sie klicken darauf, wir bereiten ein Archiv vor, Sie erhalten einen Link, alles kommt in einer Datei an. Näher an dem, was Google Takeout tut, ohne den Teil, in dem es eine Woche dauert und unvollständig ankommt. Das ist ein deutlich größeres Stück Arbeit, es steht auf der Roadmap, und es erscheint nicht in diesem Monat.
Also haben wir eine Abwägung getroffen, und es ist die naheliegende: jetzt das Werkzeug ausliefern, das für die Menschen funktioniert, die es nutzen können, statt niemanden abzudecken, während die freundlichere Version entsteht. immich-archiver ist der Schritt dazwischen. Wenn Sie sich im Terminal zu Hause fühlen, müssen Sie nicht warten.
Wo Sie es finden
Das Repository liegt unter github.com/pixelunioneu/immich-archiver, lizenziert unter der AGPL-3.0 (der GNU Affero General Public License, Version 3). Jedes Release liefert vorgebaute Binaries für Linux, Windows und macOS, sowohl für x86-64 als auch für ARM64, sodass Macs mit Apple Silicon einen nativen Build erhalten statt eines übersetzten.
Die macOS-Binaries sind mit einem Developer-ID-Zertifikat signiert und bei Apple notarisiert, wodurch Gatekeeper sie ohne die Warnung vor einem unbekannten Entwickler ausführt. Das wiegt schwerer, als es klingt: Der übliche Behelf bei unsignierten Tools besteht darin, Nutzern zu sagen, sie sollen das Quarantäne-Flag von einer heruntergeladenen Binary entfernen, und das trainiert Menschen darauf, genau die Prüfung zu umgehen, die sie schützt. Das neueste Release ist immer das richtige.
Dies ist ein erstes Release. Der Kern ist solide und getestet, hat aber noch nicht die Vielfalt an Bibliotheken gesehen, die echte Nutzer haben, und genau dort brechen solche Werkzeuge üblicherweise. Issues und Pull Requests sind willkommen, besonders jene, die mit “das hat etwas Seltsames mit meiner…” beginnen.
Ein abschließender Gedanke, denn er gilt weit über dieses Tool hinaus. Ein Backup, aus dem Sie nie wiederhergestellt haben, ist kein Backup, sondern eine Hypothese. Lassen Sie es einmal laufen, öffnen Sie den Ordner, prüfen Sie, ob sich ein Foto tatsächlich öffnet. Danach planen Sie es ein und denken nicht mehr daran.