Nach einem Jahr Entwicklung wurde die Version 0.13 des Backup-Systems restic präsentiert, das Werkzeuge zum Speichern von Backups in einem versionierten Repository bereitstellt, das auf externen Servern und in Cloud-Speichern gehostet werden kann. Daten werden in verschlüsselter Form gespeichert. Es ist möglich, flexible Regeln für das Ein- und Ausschließen von Dateien und Verzeichnissen beim Erstellen von Backups festzulegen. Es wird Unterstützung für Linux, macOS, Windows, FreeBSD und OpenBSD geboten. Der Code des Projekts ist in der Programmiersprache Go geschrieben und wird unter der BSD-Lizenz vertrieben.
Hauptfunktionen:
- Unterstützung für die Speicherung von Backups im lokalen Dateisystem, auf externen Server mit Zugriff über SFTP/SSH oder HTTP REST, in Cloud-Diensten wie Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage und Google Cloud Storage sowie in beliebigen Speichern, für die rclone-Backends vorhanden sind, gespeichert werden. 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-Erweiterungs-Modus betrieben werden kann, der das Löschen oder Ändern von Backups im Fall einer Kompromittierung der Ursprungsdaten nicht erlaubt. Server und Zugriff auf die Verschlüsselungsschlüssel.
- Unterstützung für die Definition flexibler Regeln zum Ausschließen von Dateien und Verzeichnissen beim Erstellen von Backups (zum Beispiel zum Ausschluss von Logs, temporären Dateien und leicht reproduzierbaren Daten). Das Format der Ignorierregeln ist vertraut und ähnelt rsync oder gitignore.
- Einfachheit bei Installation, Nutzung und Wiederherstellung von Informationen. Für die Arbeit mit Backups genügt es, eine ausführbare Datei zu kopieren, die ohne zusätzliche Einstellungen verwendet werden kann. Für die ausführbare Datei wird eine reproduzierbare Build-Umgebung bereitgestellt, die es ermöglicht, zu überprüfen, dass die binäre Version aus den bereitgestellten Quelltexten erstellt wurde.
- Es werden Snapshots unterstützt, die den Zustand eines bestimmten Verzeichnisses mit allen Dateien und Unterverzeichnissen zu einem bestimmten Zeitpunkt widerspiegeln. Bei jeder Erstellung eines neuen Backups wird ein zugehöriger Snapshot erstellt, der die Wiederherstellung des Zustands zu diesem Zeitpunkt ermöglicht. Es ist möglich, Snapshots zwischen verschiedenen Repositories zu kopieren.
- Um den Datenverkehr beim Erstellen von Backups zu sparen, werden 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 Größe Blöcken, die mithilfe der Rabin-Signatur ausgewählt werden. Informationen werden in Beziehung zum Inhalt und nicht zu Dateinamen gespeichert (Dateinamen und Objekte, die mit den Daten verbunden sind, werden auf der Metadatenebene des Blocks definiert). Die Deduplizierung und der Ausschluss unnötiger Datenkopien basieren auf dem SHA-256-Hash des Inhalts.
- Um den Inhalt des Repositories visuell zu bewerten und die Wiederherstellung zu erleichtern, kann ein Snapshot mit einer Sicherungskopie in Form eines virtuellen Laufwerks eingebunden werden (die Einbindung erfolgt über FUSE). Außerdem stehen Befehle zur Analyse von Änderungen und zur selektiven Wiederherstellung von Dateien zur Verfügung.
- Die Informationen auf externen Servern werden verschlüsselt gespeichert (für Prüfziffern wird SHA-256 verwendet, für die Verschlüsselung AES-256-CTR und für die Gewährleistung der Integrität - Authentifizierungscodes basierend auf Poly1305-AES). Das System ist ursprünglich so konzipiert, dass Sicherungskopien in vertrauensunwürdigen Umgebungen gespeichert werden und ein Zugriff auf die Sicherungskopie durch Unbefugte das System nicht kompromittieren sollte. Die Verschlüsselung kann sowohl über Zugangsschlüssel als auch über Passwörter bereitgestellt werden.
- Es wurde eine Möglichkeit zur Überprüfung der Sicherungskopie anhand von Prüfziffern und Authentifizierungscodes vorgesehen, um zu bestätigen, dass die Integrität der Dateien nicht beeinträchtigt wurde und dass notwendige Dateien wiederhergestellt werden können und keine versteckten Änderungen enthalten.
In der neuen Version:
- Negative Ausschlussmuster werden unterstützt. Zum Beispiel: „—exclude ‘/home/user/*’ —exclude ‘!/home/user/.config'“, um den gesamten Inhalt von /home/user außer dem Verzeichnis /home/user/.config auszuschließen.
- Der Befehl „backup“ hat den Modus „—dry-run“ erhalten, der beim Start mit der Option „—verbose“ ermöglicht, ohne tatsächliche Änderungen nachzuvollziehen, welche Dateien in die Sicherungskopie aufgenommen werden.
- In verschiedene Speicher-Backends wurde die Unterstützung für Prüfziffern für eine zusätzliche Überprüfung der hochgeladenen Daten integriert.
- Der Befehl „restore“ wurde optimiert und arbeitet nun doppelt so schnell. Auch die Leistung des Befehls „copy“ wurde verbessert.
Quelle: opennet.ru
