Ich erstelle jede Nacht ein Backup von meinem Webhosting-Dienst als .tar.gz. Die Daten werden jede Nacht nur sehr wenig geändert (<10 MB).
Ich möchte diese Dateien archivieren und die Dateien über mehrere .tar.gz-Archive hinweg deduplizieren (solide Komprimierung), ohne jede einzelne Sicherungsdatei zu extrahieren.
Vereinfachtes Beispiel:
2013-02-24.tar.gz
enthält a.pdf
2013-02-25.tar.gz
enthält a.pdf
undb.pdf
Ich möchte nur einmal komprimieren, archivieren 2013-02-24.tar.gz
und 2013-02-25.tar.gz
speichern .a.pdf
Die einzige Möglichkeit, die Deduplizierung zum Laufen zu bringen, bestand darin, beide .tar.gz-Dateien zu entpacken und sie dann erneut zu packen (mit solider Komprimierung). Dies ist jedoch ein zusätzlicher Schritt und löscht wahrscheinlich Dateisysteminformationen aufgrund unterschiedlicher Betriebssysteme. Einfaches Tar/GZ-Komprimieren beider .tar.gz-Dateien funktioniert nicht. Die endgültige Größe dieses Archivs ist die Summe der beiden ursprünglichen .tar.gz-Dateien.
Gibt es eine Möglichkeit, die Deduplizierung für den Inhalt mehrerer .tar.gz-Dateien zu verwenden?
Antwort1
Ich bin spät dran, aber die Anforderungen scheinen sich im Wesentlichen auf Folgendes zu reduzieren:
- Tarball-Dateiinhalte deduplizieren
- Original-GZIP-Dateien müssen wiederhergestellt werden können
Das scheint zunächst unmöglich. Die Deduplizierung hängt im Allgemeinen davon ab, ob man mit den unkomprimierten Dateien arbeiten kann. Aber dann wurde mir klar, dass man, wenn man sich darauf verlassen kann, dass gunzip/gzip genau dieselbe Datei erzeugt (am besten testen), verwenden kannAbonnieren, das eigentlich dazu gedacht ist, Tarballs zu deduplizieren. Also:
gunzip
die Tarballs, die Sie erhaltengzip
die Tarballs erneut, um zu überprüfen, ob es sich um exakte Übereinstimmungen handelt (sollte der Fall sein, wenn die GZIP-Implementierung dieselbe ist, aber der Komprimierungsgrad könnte beispielsweise unterschiedlich sein, das müssen Sie also möglicherweise herausfinden)- Füttern Sie die Tarballs an
zbackup
Antwort2
Ich glaube nicht, dass Sie das, was Sie versuchen, so "einfach" machen können
Wenn die .tgz-Dateien ähnlich genug sind, können Sie möglicherweise xdelta verwenden und die erste Datei vollständig sichern und dann ein xdelta mit dem Unterschied zwischen der ersten und der zweiten Datei erstellen.
Eine alternative Teillösung wäre die Verwendung von rzip (oder lrzip??), das für die Komprimierung sehr großer Dateien konzipiert ist. Dies ist zwar nicht ideal, wird aber wahrscheinlich deutlich kleiner sein als das, was Sie derzeit verwenden, auf Kosten von CPU und Speicher.
Antwort3
Ich verwende Squashfs für ähnliche Zwecke:
mksquashfs dir1 dir2 dir3 backup_file.fs -keep-as-directory
Antwort4
Es gibt eine ausgezeichneteLösungdas tut, was Sie verlangen, es dedupliziert Blöcke innerhalb mehrerer TAR-Dateien. Dadurch werden nicht nur Dateien eliminiert, die nicht geändert wurden, sondern es werden auch nur geänderte Teile ähnlicher Dateien gespeichert.
Es handelt sich jedoch um eine Client/Server-Lösung, bei der der Server kostenpflichtig ist. Aufgrund der Deduplizierung ist es jedoch sehr erschwinglich, bietet außerdem Verschlüsselung und speichert die Dateien sicher für Sie.
Der Client verwendet den normalen Tar-Code, sodass der Befehl ganz einfach zu verwenden ist.