Deduplizieren von Dateien innerhalb mehrerer .tar.gz-Archive

Deduplizieren von Dateien innerhalb mehrerer .tar.gz-Archive

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.gzenthält a.pdf 2013-02-25.tar.gzenthält a.pdfundb.pdf

Ich möchte nur einmal komprimieren, archivieren 2013-02-24.tar.gzund 2013-02-25.tar.gzspeichern .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:

  1. Tarball-Dateiinhalte deduplizieren
  2. 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:

  1. gunzipdie Tarballs, die Sie erhalten
  2. gzipdie 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)
  3. Füttern Sie die Tarballs anzbackup

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.

verwandte Informationen