
In diesem Artikel werden Sicherungstools beschrieben, die durch Erstellen von Archiven auf einem Sicherungsserver gesichert werden.
Von denen, die die Anforderungen erfüllen, sind Duplizität (zu der es eine schöne Schnittstelle in Form von Deja Dup gibt) und Duplikate.
Ein weiteres sehr bemerkenswertes Backup-Tool ist dar, aber da es eine sehr umfangreiche Liste von Optionen enthält - die Testmethode deckt kaum 10% dessen ab, wozu es in der Lage ist -, testen wir es im aktuellen Zyklus nicht.
Erwartete Ergebnisse
Da beide Kandidaten auf die eine oder andere Weise Archive erstellen, können Sie gewöhnlichen Teer als Richtlinie verwenden.
Darüber hinaus bewerten wir, wie gut die Datenspeicherung auf dem Speicherserver optimiert ist, indem wir Sicherungen erstellen, die nur den Unterschied zwischen der vollständigen Kopie und dem aktuellen Status der Dateien oder zwischen dem vergangenen und dem aktuellen Archiv (inkrementell, dekrementell usw.) enthalten.
Sicherungsverhalten:
- Eine relativ kleine Anzahl von Dateien auf dem Sicherungsspeicherserver (vergleichbar mit der Anzahl der Sicherungen oder der Datengröße in GB), aber ihre Größe ist ziemlich groß (zehn bis Hunderte von Megabyte).
- Die Größe des Repositorys enthält nur Änderungen. Duplikate werden nicht gespeichert, sodass die Größe des Repositorys kleiner ist als beim Ausführen von Software, die auf rsync basiert.
- Bei Verwendung von Komprimierung und / oder Verschlüsselung wird eine hohe Belastung des Prozessors erwartet, und wahrscheinlich auch eine ausreichend große Belastung des Netzwerks und des Festplattensubsystems, wenn der Archivierungs- und / oder Verschlüsselungsprozess auf dem Sicherungsspeicherserver funktioniert.
Führen Sie als Referenzwert den folgenden Befehl aus:
cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"
Die Ergebnisse der Ausführung waren wie folgt:

Laufzeit 3m12s. Es ist ersichtlich, dass die Geschwindigkeit auf dem Festplattensubsystem des Sicherungsspeicherservers lag, wie im Beispiel rsync . Nur ein bisschen schneller, weil Datensatz geht in eine Datei.
Um die Komprimierung zu bewerten, führen wir dieselbe Option aus, aktivieren jedoch die Komprimierung auf der Serverseite der Sicherung:
cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"
Die Ergebnisse sind wie folgt:

Die Vorlaufzeit beträgt 10m11s. Der Engpass ist höchstwahrscheinlich ein Single-Threaded-Kompressor auf der Empfangsseite.
Der gleiche Befehl, jedoch mit der Übertragung der Komprimierung auf den Server mit den Quelldaten, um die Hypothese zu testen, dass der Engpass ein Single-Threaded-Kompressor ist.
cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"
Es stellte sich so heraus:

Die Vorlaufzeit betrug 9m37s. Die Belastung eines Kerns durch den Kompressor ist deutlich sichtbar, wie Die Netzwerkübertragungsgeschwindigkeit und die Last auf dem Festplattensubsystem der Quelle sind ähnlich.
Um die Verschlüsselung auszuwerten, können Sie openssl oder gpg verwenden, indem Sie den optionalen Befehl openssl
oder gpg
mit der Pipe verbinden. Als Referenz wird es einen solchen Befehl geben:
cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"
Die Ergebnisse waren wie folgt:

Die Ausführungszeit betrug 10:30 Minuten, da 2 Prozesse auf der Empfangsseite gestartet wurden - der Engpass war wiederum ein Single-Threaded-Kompressor plus ein geringer Verschlüsselungsaufwand.
UPD: Auf Wunsch von bliznezz füge ich Tests mit pigz hinzu. Wenn Sie nur den Kompressor verwenden - es stellte sich heraus, dass es 6 Minuten und 30 Sekunden dauert, wenn Sie auch die Verschlüsselung hinzufügen - ungefähr 7 Minuten. Ein Fehler im unteren Diagramm ist ein nicht zugewiesener Festplatten-Cache:

Duplizität testen
Duplicity ist eine Python-Backup-Software, bei der verschlüsselte Tar-Archive erstellt werden.
Für inkrementelle Archive wird Librsync verwendet. Daher können Sie das in der vorherigen Schleifennotiz beschriebene Verhalten erwarten.
Backups können mit gnupg verschlüsselt und signiert werden. Dies ist wichtig, wenn Sie verschiedene Anbieter zum Speichern von Backups verwenden (s3, backblaze, gdrive usw.).
Mal sehen, was die Ergebnisse sein werden:
Dies sind die Ergebnisse, die beim Starten ohne Verschlüsselung erhalten werdenSpoiler

Die Laufzeit jedes Testlaufs:
Und hier sind die Ergebnisse, wenn die Gnupg-Verschlüsselung mit einer Schlüsselgröße von 2048 Bit aktiviert ist:

Betriebszeit für dieselben Daten mit Verschlüsselung:
Die Blockgröße wurde angegeben - 512 Megabyte, was in den Diagrammen deutlich sichtbar ist; Die Prozessorlast wurde tatsächlich auf einem Niveau von 50% gehalten, was bedeutet, dass das Programm nicht mehr als einen Prozessorkern verwendet.
Das Funktionsprinzip des Programms ist auch deutlich zu erkennen: Sie haben ein Datenelement genommen, es geschüttelt und an den Backup-Speicherserver gesendet, was sehr langsam sein kann.
Ein weiteres Merkmal ist die vorhersehbare Laufzeit des Programms, die nur von der Größe der geänderten Daten abhängt.
Das Aktivieren der Verschlüsselung hat die Laufzeit des Programms nicht wesentlich erhöht, aber die Prozessorlast um etwa 10% erhöht, was ein ziemlich guter Bonus sein kann.
Leider konnte dieses Programm die Situation beim Umbenennen des Verzeichnisses nicht korrekt erkennen, und die resultierende Repository-Größe entsprach der Größe der Änderungen (d. H. Alle 18 GB), aber die Möglichkeit, einen nicht vertrauenswürdigen Server für die Sicherung zu verwenden, deckt dieses Verhalten definitiv ab.
Duplikate testen
Diese Software ist in C # geschrieben und wird mit einer Reihe von Bibliotheken von Mono gestartet. Es gibt eine GUI sowie eine CLI-Version.
Eine Beispielliste der wichtigsten Funktionen ist nahezu doppelt vorhanden, einschließlich verschiedener Anbieter von Sicherungsspeichern. Im Gegensatz zur doppelten Funktion sind die meisten Funktionen jedoch ohne Tools von Drittanbietern verfügbar. Plus oder Minus - dies hängt vom jeweiligen Fall ab. Für Anfänger ist es jedoch höchstwahrscheinlich einfacher, eine Liste aller Funktionen gleichzeitig zu haben, bevor die Pakete für Python installiert werden, wie dies bei Duplizitäten der Fall ist.
Eine weitere kleine Nuance besteht darin, dass das Programm die lokale SQLite-Datenbank im Auftrag des Benutzers, der die Sicherung startet, aktiv schreibt. Daher müssen Sie bei jedem Start des Prozesses mit cli zusätzlich die korrekte Anzeige der gewünschten Datenbank überwachen. Beim Durcharbeiten der GUI oder WEBGUI werden die Details für den Benutzer ausgeblendet.
Mal sehen, welche Indikatoren diese Lösung geben kann:Wenn Sie die Verschlüsselung deaktivieren (und WEBGUI empfiehlt dies nicht), sind die Ergebnisse wie folgt:

Arbeitszeit:
Bei aktivierter Verschlüsselung mit aes sieht es folgendermaßen aus:

Arbeitszeit:
Und wenn Sie das externe gnupg-Programm verwenden, erhalten Sie die folgenden Ergebnisse:

Wie Sie sehen, kann das Programm in mehreren Threads arbeiten, dies ist jedoch keine produktivere Lösung. Wenn Sie die Verschlüsselung vergleichen, wird ein externes Programm gestartet
Es stellte sich heraus, dass es schneller war als die Bibliothek aus der Mono-Suite. Vielleicht liegt das daran, dass das externe Programm optimierter ist.
Ein angenehmer Moment war auch die Tatsache, dass die Repository-Größe genau so viel kostet, wie die tatsächlichen Daten geändert wurden, d. H. duplicati hat eine Umbenennung des Verzeichnisses festgestellt und diese Situation korrekt behandelt. Dies kann beim Ausführen des zweiten Tests gesehen werden.
Im Allgemeinen ein ziemlich positiver Eindruck des Programms, einschließlich ausreichender Freundlichkeit für Anfänger.
Ergebnisse
Beide Kandidaten arbeiteten ziemlich langsam, aber im Allgemeinen gibt es im Vergleich zum üblichen Teer Fortschritte, zumindest Duplikate. Der Preis eines solchen Fortschritts ist ebenfalls verständlich - eine spürbare Belastung
der Prozessor. Im Allgemeinen gibt es keine besonderen Abweichungen bei der Vorhersage der Ergebnisse.
Schlussfolgerungen
Wenn Sie sich nirgendwo beeilen müssen und der Prozessor auch einen Spielraum hat, wird jede der in Betracht gezogenen Lösungen in jedem Fall viel Arbeit leisten, die nicht wiederholt werden sollte, indem Wrapper-Skripte über tar geschrieben werden. Das Vorhandensein von Verschlüsselung ist eine sehr notwendige Eigenschaft, wenn dem Server zum Speichern von Sicherungen nicht vollständig vertraut werden kann.
Im Vergleich zu rsync- basierten Lösungen kann die Leistung um ein Vielfaches schlechter sein, obwohl Teer in seiner reinen Form 20 bis 30% schneller als rsync arbeitet.
Das Einsparen der Größe des Repositorys ist jedoch nur für Duplikate möglich.
Ankündigung
Backup, Teil 1: Warum benötigen Sie ein Backup, einen Überblick über Methoden und Technologien?
Backup, Teil 2: Übersicht und Testen von rsync-basierten Backup-Tools
Backup, Teil 3: Übersicht und Testen von Duplizität, Duplikaten, Deja Dup
Backup, Teil 4: Übersicht und Testen von zbackup, restic, borgbackup
Backup, Teil 5: Testen von Bacula und Veeam Backup für Linux
Backup: Teil von Lesern angefordert: AMANDA Review, UrBackup, BackupPC
Backup, Teil 6: Vergleichen der Backup-Tools
Backup Teil 7: Schlussfolgerungen
Gepostet von Finnix