Nach einem Jahr Entwicklung wurde die Version 0.13 des Backup-Systems restic veröffentlicht, das Werkzeuge zur Speicherung von Backups in einem versionierten Repository bietet, das auf externen Servern und in Cloud-Speichern gehostet werden kann. Die Daten werden verschlüsselt gespeichert. Flexible Regeln zum Ein- und Ausschließen von Dateien und Verzeichnissen können beim Erstellen von Backups definiert werden. Es wird Unterstützung für Linux, macOS, Windows, FreeBSD und OpenBSD geboten. Der Code des Projekts ist in Go geschrieben und wird unter der BSD-Lizenz veröffentlicht.
Hauptfunktionen:
- Unterstützung für die Speicherung von Backups im lokalen Dateisystem, auf externen Server mit SFTP/SSH- oder HTTP-REST-Zugriff zu den Clouds von Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage und Google Cloud Storage sowie zu allen Speicherlösungen, für die Backends von rclone verfügbar sind. Zur Organisation der Speicherung kann auch ein spezieller REST-Server verwendet werden, der eine höhere Leistung im Vergleich zu anderen Backends bietet und im nur ergänzenden Modus betrieben werden kann, sodass gelöschte oder geänderte Sicherungen im Falle einer Kompromittierung nicht möglich sind. Server und dem Zugriff auf Verschlüsselungsschlüssel.
- Unterstützung für die Definition flexibler Regeln zum Ausschließen von Dateien und Verzeichnissen beim Erstellen von Backups (z. B. um Protokolle, temporäre Dateien und leicht reproduzierbare Daten von den Backups auszuschließen). Das Format der Ignorierregeln ist vertraut und ähnelt dem von rsync oder gitignore.
- Einfache Installation, Nutzung und Wiederherstellung von Daten. Um mit Backups zu arbeiten, müssen Sie lediglich eine ausführbare Datei kopieren, die ohne zusätzliche Konfiguration verwendet werden kann. Für die ausführbare Datei wird eine wiederholbare Build-Umgebung bereitgestellt, die es ermöglicht, selbst zu überprüfen, dass die Binärdatei aus den bereitgestellten Quelltexten erstellt wurde.
- Snapshots werden unterstützt, die den Zustand eines bestimmten Verzeichnisses mit allen Dateien und Unterverzeichnissen zu einem bestimmten Zeitpunkt wiedergeben. Bei jeder Erstellung eines neuen Backups wird ein zugehöriger Snapshot erstellt, der es ermöglicht, den Zustand zu diesem Zeitpunkt wiederherzustellen. Es ist möglich, Snapshots zwischen verschiedenen Repositories zu kopieren.
- Um den Datenverkehr zu reduzieren, werden beim Erstellen von Sicherungskopien nur die geänderten Daten kopiert. Um eine effiziente Speicherung zu gewährleisten, werden die Daten im Repository nicht dupliziert, und zusätzliche Snapshots umfassen nur die geänderten Daten. Das System arbeitet nicht mit ganzen Dateien, sondern mit variablen Datenblöcken, die mittels des Rabin-Signaturverfahrens ausgewählt werden. Informationen werden in Bezug auf den Inhalt und nicht auf die Dateinamen gespeichert (die mit den Daten verbundenen Namen und Objekte werden auf der Ebene der Blockmetadaten definiert). Die Deduplizierung und das Vermeiden unnötiger Datenkopien erfolgen basierend auf dem SHA-256-Hash des Inhalts.
- Zur anschaulichen Beurteilung des Inhalts des Repositories und zur Vereinfachung der Wiederherstellung kann der Snapshot mit der Sicherung als virtuelles Laufwerk bereitgestellt werden (die Bereitstellung erfolgt über FUSE). Zudem stehen Befehle zur Analyse von Änderungen und zur selektiven Extraktion von Dateien zur Verfügung.
- Informationen auf externen Servern werden verschlüsselt gespeichert (für die Checksummen wird SHA-256 verwendet, für die Verschlüsselung AES-256-CTR und zur Gewährleistung der Integrität werden Authentifizierungscodes auf Basis von Poly1305-AES genutzt). Das System ist ursprünglich so ausgelegt, dass Backups in Vertrauenswürdigkeit benötigenden Umgebungen gespeichert werden, wobei der Zugriff auf Backups durch Dritte die Systeme nicht kompromittieren sollte. Die Verschlüsselung kann sowohl über Zugangsschlüssel als auch über Passwörter erfolgen.
- Es besteht die Möglichkeit, Backups anhand von Checksummen und Authentifizierungscodes zu verifizieren, um zu bestätigen, dass die Integrität der Dateien nicht beeinträchtigt wurde und dass die erforderlichen Dateien wiederhergestellt werden können, ohne dass versteckte Modifikationen vorhanden sind.
In der neuen Version:
- Die Unterstützung negativer Ausschlussmuster wurde hinzugefügt. Beispielsweise «—exclude '/home/user/*' —exclude '!/home/user/.config'» zur Ausschluss sämtlicher Inhalte von /home/user, außer dem Verzeichnis /home/user/.config.
- Dem Befehl «backup» wurde der Modus «—dry-run» hinzugefügt, der beim Aufruf mit der Option «—verbose» es ermöglicht, ohne tatsächliche Änderungen zu verfolgen, welche Dateien in das Backup aufgenommen werden.
- In verschiedenen Speicher-Backends wurde die Unterstützung für Prüfziffern hinzugefügt, um die hochgeladenen Daten zusätzlich zu überprüfen.
- Das Kommando "restore" wurde optimiert und arbeitet jetzt doppelt so schnell. Auch die Leistung des Kommandos "copy" wurde verbessert.
Quelle: opennet.ru
