Kopia Backup

Ein Test der Open-Source Backup-Software Kopia

Kopia Backup

Auf der Suche nach einer Datensicherungs-Strategie?

Lösungen für Datensicherungen gibt es wie Sand am Meer. Viele aber kränkeln an Einschränkungen wie fehlender Automatisierung, Verschlüsselung, Versionierung und Deduplizierung.

Wie in meinem Artikel “3-2-1 erklärt”, hat sich die Cloud-Sicherung im Anwendungsbereich “ein Backup außer Haus” durchgesetzt. Aber auch bei der Überprüfung der Datensicherung hat sich meine bis Juni 2024 bewährte Backup-Lösung nicht als kooperativ erwiesen.

Durch einen Anwenderhinweis stieß ich auf die Open-Source Backup-Lösung namens Kopia. Zeit für einen kleinen Test.

Kann Kopia liefern?

Die Website Kopia.io wirbt mit “Schnelle und sichere Open-Source Backup-Software”. Und weiterhin “Verschlüsselte, komprimierte und deduplizierte Backups im Cloud-Speicher Ihrer Wahl. Unterstützt Windows, macOS und Linux mit grafischer Oberfläche und auf der Kommandozeile".

Das klingt schon fast zu schön, um wahr zu sein. Für mich als Programmierer ist die Kommandozeile ein Novum, das zu Automatisierung geradezu einlädt. Damit hat Kopia mich schon einmal an der Angel.

Cloud-Speicher meiner Wahl?

Die Freiheit, den Speicher für die Datensicherungen selber bestimmen zu dürfen, ist mir sehr wichtig. Diese Freiheit verhindert das sogenannte “Vendor lock-in” in dem ein Anbieter seine Kunden auf die eigenen, kostenpflichtigen Dienste lockt und einen Wechsel (vielleicht sogar ohne böse Absicht) unmöglich macht. Ein weiterer Vorteil ist natürlich, dass man sich ein günstiges Angebot aussuchen kann. Die Anbieter von Cloud-Speicher stehen damit in Konkurrenz zueinander, was die Marktpreise senkt.

Es gibt wirklich erhebliche Unterschiede in der Preisgestaltung der Anbieter. So kostet ein Terabyte Speicherplatz in der Amazon AWS Cloud US $23 im Monat, bei Backblaze lediglich US $6. Auch die Preise bei Lesezugriffen auf diese Cloud-Speicher unterscheiden sich. Bis zu US $50 wird beim Abruf von 1TB Daten verlangt. (Stand aller Preise: September 2024)

Und die Liste der unterstützten Cloudspeicher ist recht lang. Kopia unterstützt:

  • Amazon S3 und kompatible Speicher
  • Azure Blob
  • Backblaze B2
  • Google Cloud
  • Alle Server, die WebDAV unterstützen
  • Alle Server, die SFTP unterstützen
  • Einige Speicher, die zur Rclone Software (eine Open-Source Lösung zur Synchronisierung von Dateien zwischen Cloud-Speichern) kompatibel sind
  • Lokale und Netzwerk-Verzeichnisse
  • Alle entfernten Server, auf denen der “Kopia Repository Server” installiert werden kann

Aus Preisgründen wähle ich den Cloudspeicher von Backblaze B2 für US $6 pro Terabyte.

Kopia hat mit der Einrichtung und Bezahlung des Cloudspeichers nichts zu tun. Da ich aber bereits für Datensicherung meiner Webserver einen Backblaze-Account mein Eigen nenne, erstelle ich dort einen Speicherbereich, hier “Bucket” (Eimer) genannt, nebst zugehöriger Zugangsdaten. Wichtig für Backup-"Eimer" ist, dass die Versionierung ausgeschaltet werden muss. Oft ist dies unter dem Begriff “Nur die letzte Version einer Datei behalten” einstellbar.

Installations-Probleme

Da ich bei meiner Cloud-Sicherung auf eine völlige Automatisierung setzen möchte, interessiert mich vor allem die Kommandozeilen-Version von Kopia. In der Installationsanleitung von Kopia ist als einzige Installationsmöglichkeit von “Scoop” die Rede: Eine Paketverwaltungssoftware ähnlich zu apt-get aus der Unix-Welt. Obwohl auch dies eine Open-Source Lösung ist, widerstrebt mir die Idee, ein Installationsprogramm zu installieren, welches dann eine einzelne, ausführbare Datei auf meinen Computer holen soll.

Als Workaround (und weil ich mich nicht um Updates der Paketverwaltung kümmern will) installiere ich Scoop gefolgt von Kopia anleitungsgemäß und kopiere die Datei kopia.exe in mein Tool-Verzeichnis. Danach deinstalliere ich Scoop gemeinsam mit Kopia.

Einrichten einer Repository

In einem Terminalfenster sollte nun die Eingabe von “kopia” die Ausgabe einer Hilfeseite von Kopia ergeben. Sollte stattdessen die Meldung “Befehl oder Dateiname nicht gefunden” erscheinen, liegt Kopia nicht in einem Verzeichnis, welches im Benutzerpfad enthalten ist. Bei mir ist alles glatt gelaufen, weil mein Tool-Verzeichnis bereits im Pfad enthalten ist.

Da Kopia nicht weiss, welchen Cloud-Speicher ich verwenden möchte, muss ich zunächst eine Verbindung dorthin aufbauen und eine leere, “Repository” genannte Datenstruktur dort anlegen. Hat man dieses einmal getan, merkt sich Kopia die Einstellung und fragt nicht mehr weiter. Aber man kann auch verschiedene “Repositories” einrichten, z.B. eine weitere auf einer externen, mit USB verbundenen Festplatte.

Da ich mich für den Backblaze B2-Speicher entschieden habe, muss ich in den nächsten beiden Schritten dort das Repository erstellen und Kopia schließlich damit verbinden:

 

kopia repository create b2 --bucket=DATENSICHERUNG --key-id=<id> --key=<password>

 

erstellt auf B2 im Bucket “DATENSICHERUNG” eine leere Datenstruktur. Kopia fragt hier nach einem Kennwort zur Verschlüsselung der Daten, welches offline gesichert werden sollte. Der nächste Befehl sichert die Zugangsdaten aber in einer Konfigurationsdatei, so dass man sie nicht erneut eingeben muss, um eine Datensicherung zu starten:

 

kopia repository connect b2 --bucket=DATENSICHERUNG --key-id=<id> --key=<password>

 

Wieder fragt Kopia nach dem Kennwort der Verschlüsselung. Damit ist Installation und Konfiguration von Kopia vollständig abgeschlossen.

Später habe ich festgestellt, dass die Installation und Verbindung zum Repository von verschiedenen Rechnern aus gar kein Problem darstellt, sogar auf einem Raspberry Pi Platinencomputer. Zurzeit läuft Kopia unter Windows, macOS, Raspberry OS und Ubuntu Server 22.

Erstellen von Backups

Wenige Dinge sind so simpel wie das Erstellen von Backups mit Kopia CLI, ausgenommen natürlich die für Endanwender merkwürdige Tatsache, dass alle Eingaben in Textform und in einem Konsolenfenster erfolgen müssen. Kein Problem, Kopia verfügt über eine komfortable Benutzeroberfläche, die auch erlaubt, Snapshots regelmäßig und automatisiert zu erstellen.

Auf der Kommandozeile ist der Vorgang immer gleich:

  • Wechseln in das zu sichernde Verzeichnis
  • Eingeben von “kopia snapshot create .

Die Syntax ist für jedes Betriebssystem identisch. Da Kopia keine administrativen Rechte erfordert, kann man Backups hervorragend in einem Cron-Job (Unix) oder mit der Windows-Aufgabenplanung planen. Auch kann man die Sicherung sehr gut mit Wartungsskripten verbinden, da das Hinzufügen einer einzelnen Zeile mit “kopia snapshot create .” ausreicht. Programmierer können Kopia auch in den CI-Prozess (Continuous Integration) problemlos einfügen.

Mit einer Datei namens “.kopiaignore”, die der Syntax von “.gitignore” folgt, kann man Unterverzeichnisse oder auch einzelne Dateien vom Backup ausschließen.

Retention rules (Aufbewahrungsvorschriften)

Die häufigste Ursache für Datenverlust ist der sogenannte “human error”: dass jemand (ich!) versehentlich die falsche Datei unbemerkt in den Papierkorb legt. Bei Datensicherungen sind daher die Aufbewahrungsvorschriften sehr wichtig und diese sind bei Kopia pro Backup-Verzeichnis frei wählbar. Kopia sorgt selber für ein aufgeräumtes Backup, indem täglich ein Wartungslauf aufgerufen wird. Dieser erfolgt automatisch nach der nächsten Sicherung nach Ablauf der Zeitspanne, die für Wartung eingestellt ist (Standard: 24h).

Die Aufbewahrungsregeln sind, wie ich festgestellt habe, besser mit der grafischen Benutzeroberfläche von Kopia einzustellen. Schön, dass man sowohl die Kommandozeilenversion und die GUI-Version von Kopia gleichzeitig verwenden kann.

Der Wiederherstellungsprozess

Der geneigte Leser wird nun sicherlich interessiert sein zu erfahren, wie der Wiederherstellungsprozess im Fall eines Datenverlustes aussieht.

Dazu ist folgendes anzumerken: Einen simpleren und komfortableren Mechanismus kann ich mir nicht vorstellen. Kopia bindet einfach sämtliche Datensicherungen der Repository unter dem Laufwerksbuchstaben Z: in das Dateisystem ein. Das Rückspielen der Daten geschieht dann mit einfachsten Mitteln: Es genügt der Windows-Explorer.

Um die Rücksicherung zu starten:

 

kopia mount

 

Unter Windows wird ein Laufwerk unter dem Bezeichner “Z:” eingebunden. macOS verlangt nach dem Zusatz “--browse” und öffnet dann ein Finder-Fenster mit allen Datensicherungen des Repository. Der Raspberry Pi und Ubuntu Server verfügt weder über einen Finder, noch Explorer. Der kopia mount-Befehl zeigt aber dann den Mountpunkt an, zu dem man in einer separaten Shell manuell wechseln muss.

Auch Dienstprogramme wie Total Commander (Windows), Commander One (macOS), oder Midnight Commander (Unix Terminal) können die Dateien lesen und zurückkopieren.

Ist die Rücksicherung abgeschlossen, kann das Laufwerk/der Mountpoint mit Strg-C geschlossen werden.

Kopia liefert!

Verschlüsselung

Kopia hat eine echte Ende-zu-Ende-Verschlüsselung, in der das Kennwort für die Verschlüsselung niemals den Rechner des Anwenders verläßt. Diese Eigenschaft ist für die Verwendung von Cloud-Speicher eines Drittanbieters eine absolute und nicht-diskutierbare Voraussetzung.

Kompression

Kompression kann entweder global, oder für jedes einzelne Verzeichnis ein- und ausgeschaltet werden. Kopia bietet verschiedene Kompressionsalgorithmen aus der Unix-Welt an ("zstd" wird auf der Kopia-Website als gute Grundeinstellung vorgeschlagen und hat bei mir gute Resultate erzielt). Wird Kopia z.B. für die Sicherung bereits komprimierter Datensicherungen verwendet, kann eine Deaktivierung der Kompression den Zeitbedarf für die Sicherung reduzieren.

Deduplizierung

Kopia sichert in einem Snapshot nur Dateien, die sich seit der letzten Datensicherung geändert haben (inkrementelle Sicherung). Jede Datei, die geändert wird, wird effizient als Snapshot gespeichert, indem nur die geänderten Teile und nicht die gesamte Datei hochgeladen werden. Dazu teilt Kopia die Datei mit einem “Rolling Hash” Algorithmus in Einzelteile auf. Bereits hochgeladene Einzelteile werden dann platzsparend als Referenz auf einen dieser bereits gesicherten Blöcke gespeichert.

Freie Anbieterwahl

Kopia hat mir die Wahl von Backblaze B2 als Cloud-Speicher überlassen. Gleichzeitig konnte ich eine handelsübliche, externe Festplatte als Sicherungsmedium ("Repository") einrichten und darauf sichern. Weitere Speicher habe ich noch nicht getestet. Es gibt aber keinen Hinweis im Netz, dass Probleme mit anderen Anbietern auftreten.

Zuverlässigkeit

Nach drei Monaten mit Kopia habe ich keinerlei Macken oder Probleme erkennen können, weder bei Backblaze B2, noch auf meiner Sicherungsfestplatte. Datensicherungen ließen sich jederzeit mit einfachsten Mitteln (Windows Explorer, Midnight Commander, copy, cp) zurückspielen.

Selbstverständlich ist Kopia und Backblaze nur ein Teil meiner 3-2-1 Sicherungsstrategie.

Eine Sache, die Kopia nicht kann

Obwohl Kopia mir als "Eierlegende Wollmilchsau" der Cloud-Datensicherung vorkommt: Es gibt allerdings ein einziges Feature, das Kopia nicht beherrscht: Nutzerrechte.

Jede Maschine, die mit einem Repository verbunden ist, kann alle Datensicherungen dieses Repository auslesen. Was für mich als Einzelunternehmer kein Problem darstellt.

Wer aber verhindern möchte, dass Anwender auf fremde Datensicherungen einer anderen Maschine zugreifen dürfen, muss für jeden Anwender einen eigenen Bucket anlegen.