[OT] Kompression großer, identischer Dateien
Hallo, ich habe folgendes Anliegen/Problem: Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". Die größten und identischen Dateien sind dabei so ca. 800 MB groß. Jetzt wollte ich das ganze noch kleiner machen, indem ich es komprimiere (zip, 7z). Meine Vorstellung war dabei, dass durch die Redundanz das Image maximal 28 GB groß sein sollte zzgl. Kontrolldaten. Allerdings lande ich bei ca. 41 GB. Hat da jemand einen Tipp, wie man das vielleicht kleiner bekommt? Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Alex, Am 23.06.20 um 15:43 schrieb Alex Winzer:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". Die größten und identischen Dateien sind dabei so ca. 800 MB groß.
Jetzt wollte ich das ganze noch kleiner machen, indem ich es komprimiere (zip, 7z). Meine Vorstellung war dabei, dass durch die Redundanz das Image maximal 28 GB groß sein sollte zzgl. Kontrolldaten. Allerdings lande ich bei ca. 41 GB.
zunächst einmal vermute ich, dass Dein Kompressionsverfahren die Hardlinks nicht erkannt hat und deshalb jede einzelne Version wieder getrennt komprimiert hat, so dass die Wirkung der Hardlinks aufgehoben wurde. Da wäre es ein Ansatz, nicht Hardlinks, sonder Softlinks zu verwenden und nur die Dateien zu komprimieren. Weiter weiß ich nicht genau, was Du da für Datenbestände hast. Sind es die Landkarten oder geht es um Deine Routen, die als gpx-Dateien (oder was ähnlichem) gespeichert sind? gpx-Tracks sollten sich gut komprimieren lassen, denn darin sind nur Ziffern und eine handvoll andere Zeichen enthalten. Bei vollen Landkarten kann das schwieriger werden, je nachdem wie gut sie vorher schon komprimiert waren. Ich verwende für solche Aufgaben meist gzip. Das bedeutet auch, ich packe nicht mehrere Dateien in ein Archiv, sondern jede Datei einzeln wird verpackt. Mit Parameter -9 wird langsam aber gut komprimiert. Wenn dann im Ergebnis ganz viele kleine Dateien herauskommen, geht wieder viel Platz durch nur teilweise genutzte Sektoren verloren. Dann ist es doch besser erst verzeichnisweise zu taren und dann zu gezippen. Gruß Jan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Danke für die Hinweise. Am 23.06.2020 um 17:20 schrieb Jan Handwerker:
Hallo Alex,
Am 23.06.20 um 15:43 schrieb Alex Winzer:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". Die größten und identischen Dateien sind dabei so ca. 800 MB groß.
[...]
zunächst einmal vermute ich, dass Dein Kompressionsverfahren die Hardlinks nicht erkannt hat und deshalb jede einzelne Version wieder getrennt komprimiert hat, so dass die Wirkung der Hardlinks aufgehoben wurde. Da wäre es ein Ansatz, nicht Hardlinks, sonder Softlinks zu verwenden und nur die Dateien zu komprimieren.
Welcher Kompressor erkennt denn Softlinks? Alle?
Weiter weiß ich nicht genau, was Du da für Datenbestände hast. Sind es die Landkarten oder geht es um Deine Routen, die als gpx-Dateien (oder was ähnlichem) gespeichert sind?
[...]
Das weiß ich selbst nicht so genau. Denkst Du, VW hat das irgendwo öffentlich gemacht, so dass sich eine Suche lohnen würde?
Ich verwende für solche Aufgaben meist gzip. Das bedeutet auch, ich packe nicht mehrere Dateien in ein Archiv, sondern jede Datei einzeln wird verpackt. Mit Parameter -9 wird langsam aber gut komprimiert.
[...]
Damit wäre aber mein Plan, explizit die Redundanz auszunuten, nicht mehr umsetzbar.
Gruß Jan
Vielleicht noch als Ergänzung/Erklärung zum Hinweis "rm -f": Im Grunde hat Manfred recht. Allerdings sind es nicht meine Daten und sie sollen in einer Cloud zwischengebunkert werden. Dort kostet Platz aber etwas. Und ich habe ab und an ein ähnliches Problem mit anderen Daten. Ich unterlag insoweit dem Irrglauben, dass man bei einer Wörterbuchgröße von z.B. 4 GB genau das hinbekommt. Mir geht es also nicht um diese 13 GB, sondern darum, das Prinzip etwas besser zu verstehen. Ich fühle mich daher von solchen Kommentaren ehrlich gesagt ein wenig auf den Schlips getreten :-D Gruß, Alex -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Alex, Am 26.06.20 um 10:48 schrieb Alex Winzer:
Am 23.06.2020 um 17:20 schrieb Jan Handwerker:
Am 23.06.20 um 15:43 schrieb Alex Winzer:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". Die größten und identischen Dateien sind dabei so ca. 800 MB groß.
[...]
zunächst einmal vermute ich, dass Dein Kompressionsverfahren die Hardlinks nicht erkannt hat und deshalb jede einzelne Version wieder getrennt komprimiert hat, so dass die Wirkung der Hardlinks aufgehoben wurde. Da wäre es ein Ansatz, nicht Hardlinks, sonder Softlinks zu verwenden und nur die Dateien zu komprimieren.
Welcher Kompressor erkennt denn Softlinks? Alle?
Hast Du denn den Unterschied zwischen Softlinks und Hardlinks verinnerlicht? Bei einem Hardlink wird ein weiterer Eintrag in der FAT (File Allocation Table) gemacht. (Das hängt im Detail vom Filesystem ab, Feinheiten brauchen wir aber mal nicht.) Wenn Du eine Datei "Beispiel" anlegst und einen Hardlink "MeinBeispiel" dazu anlegst, hast Du zwei gleichberechtigte Einträge in der FAT, die auf den gleichen Speicherbereich auf der Festplatte verweisen. So können beliebig viele Einträge in der Fat für einen Speicherbereich der Festplatte angelegt werden. Alle Einträge sind gleichberechtigt, alle glauben, den Platz auf der Platte für sich zu haben und so fällt unter Umständen du (disk usage) darauf herein und sagt Du hast das Fünffache des Platzes verbraucht, obwohl nur 5 Hardlinks auf die immer gleiche Datei verweisen. Der Speicherbereich wird erst dann wieder frei gegeben, wenn alle 5 Einträge in der FAT gelöscht werden. Ein Softlink zeigt im Gegensatz dazu nicht auf den Inhalt auf der Platte, sondern auf den anderen Eintrag in der FAT. Das ist im Ergebnis etwas ganz anderes. Ein Softlink ist auch nur ein Eintrag in der FAT, aber er zeigt nicht auf einen Speicherbereich der Festplatte, sondern nur auf einen anderen Eintrag. Da ist nix mit gleichberechtigt. Der Softlink ist jederzeit von der eigentlichen Datei zu unterscheiden. Löscht Du die Zieldatei, dann bleibt der Softlink bestehen, zeigt aber ins Leere. Hardlinks funktionieren nur innerhalb einer Partition. Softlinks können an beliebig andere Stellen im Filesystem verweisen. Wenn sich nun Dein Kompressionsprogramm durch das Filesystem arbeitet, findet es jede einzige Kopie des Hardlinks, komprimiert die Datei und reduziert den Zähler der Hardlinks, die auf die Datei zeigen. Die komprimierten Versionen der Hardlinks sind dann nicht mehr eine komprimierte Datei mit mehreren Hardlinks darauf, sondern jede komprimierte Datei braucht wieder den vollen Platz. - Das kann hinterher mehr Platz als vorher sein. Bei einem Softlink wird der Softlink gar nicht komprimiert. Nur die eine Version der Datei auf der Festplatte wird komprimiert. Da sich der Dateiname dann ändert (es wird z.B. ein .gz angehängt), zeigen die Softlinks ins Leere. Entweder man lebt damit ("ich weiß ja, dass jetzt die .gz-Datei gemeint ist") oder man macht sich neue Softlinks. Es verhindert aber erfolgreich den benötigten Plattenplatz.
Weiter weiß ich nicht genau, was Du da für Datenbestände hast. Sind es die Landkarten oder geht es um Deine Routen, die als gpx-Dateien (oder was ähnlichem) gespeichert sind?
Das weiß ich selbst nicht so genau. Denkst Du, VW hat das irgendwo öffentlich gemacht, so dass sich eine Suche lohnen würde?
Glaub ich auch nicht. Aber schau Dir doch die Dateien an (head "file") oder frage das Tool "file" danach: "file -i datei" gibt Dir eine Einschätzung, was das für eine Datei ist. gpx-Tracks sind reiner Text.
Ich verwende für solche Aufgaben meist gzip. Das bedeutet auch, ich packe nicht mehrere Dateien in ein Archiv, sondern jede Datei einzeln wird verpackt. Mit Parameter -9 wird langsam aber gut komprimiert.
Damit wäre aber mein Plan, explizit die Redundanz auszunuten, nicht mehr umsetzbar.
Mit Hardlinks nicht. Mit Softlinks schon.
Vielleicht noch als Ergänzung/Erklärung zum Hinweis "rm -f":
Der stammt nicht von mir.
Im Grunde hat Manfred recht. Allerdings sind es nicht meine Daten und sie sollen in einer Cloud zwischengebunkert werden. Dort kostet Platz aber etwas. Und ich habe ab und an ein ähnliches Problem mit anderen Daten.
Ich unterlag insoweit dem Irrglauben, dass man bei einer Wörterbuchgröße von z.B. 4 GB genau das hinbekommt. Mir geht es also nicht um diese 13 GB, sondern darum, das Prinzip etwas besser zu verstehen. Ich fühle mich daher von solchen Kommentaren ehrlich gesagt ein wenig auf den Schlips getreten :-D
Kann ich verstehen. Je nach Datenbestand hat Manfred ja durchaus recht, denn ich halte es für unwahrscheinlich, dass Du je auf alte Navi-Karten zurückgreifen willst (außer Du hast ein historisches Interesse daran). Ich habe auch nie den Versuch gestartet, mit einem Atlas aus den 50er Jahren eine Urlaubsreise anzutreten. Das grundsätzliche Problem, wie bekomme ich meine Daten sinnvoll komprimiert, wurde damit nicht diskutiert. Die Frage bleibt für mich aber wichtig, denn leider wachsen mit den Speichermöglichkeiten auch die Datenmengen. ("Daten sind ein ideales Gas. Sie nehmen den ihnen zur Verfügung gestellten Platz stets voll ein.) Auf Dauer sind immer größere Speicher nicht die Lösung des Problems. Herzliche Grüße Jan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 23.06.2020 um 15:43 schrieb Alex Winzer:
Hallo,
ich habe folgendes Anliegen/Problem:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". Die größten und identischen Dateien sind dabei so ca. 800 MB groß.
Jetzt wollte ich das ganze noch kleiner machen, indem ich es komprimiere (zip, 7z). Meine Vorstellung war dabei, dass durch die Redundanz das Image maximal 28 GB groß sein sollte zzgl. Kontrolldaten. Allerdings lande ich bei ca. 41 GB.
Hat da jemand einen Tipp, wie man das vielleicht kleiner bekommt?
rm -rf * Mal im Ernst, was soll der Aufwand wegen läppischen 13GB ??? Wir leben in Zeiten wo selbst die teuren SSD's in TB gemessen werden Manfred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Dienstag, 23. Juni 2020, 15:43:05 CEST schrieb Alex Winzer:
Hallo,
ich habe folgendes Anliegen/Problem:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". (...).
Was genau hast du da gemacht? CloneSpy funktioniert nur unter Windows mit NTFS oder? Hast du danach versucht das gesamte NTFS-Image zu komprimieren oder die einzelnen Dateien? Falls letzteres, dann ist es wohl so wie der andere Jan schreibt. Wenn du eine Datei komprimierst, wird ja die komprimierte Datei neu angelegt und gefüllt und dann die alte gelöscht, da verschwinden die Hardlinks bei. Und die komprimierten Dateien unterscheiden sich trotz identischer Eingabedaten, weil sie häufig einen Timestamp enthalten. Und so kann CloneSpy auf den komprimierten Dateien auch nichts mehr für dich tun.
(...). Hat da jemand einen Tipp, wie man das vielleicht kleiner bekommt?
Da du ja gerne das Prinzip verstehen willst: Das was du suchst heißt Deduplication, Google findet sehr viel dazu. Das macht man beispielsweise bei inkrementellen Backups. Und nicht unbedingt nur auf Dateiebene wie CloneSpy. Das würde dir nämlich nicht bei bspw. virtuellen Maschinen helfen, die als eine riesige Datei vorliegen in der sich nur einzelen Blöcke verändern. Solch große Dateien zerlegt man dann in viele kleine und verlinkt dann die identischen. Mit http://zbackup.org/ kannst du angeblich alles mögliche zum Fraß vorwerfen und es dedupliziert, komprimiert und verschlüsselt (optional). Das letzte Release ist allerdings schon Jahre her gibt es aber direkt bei openSUSE. Der Nachteil ist natürlich, dass du ohne zbackup nichts mehr mit den Daten anfangen kannst. Wenn man das aber gern möchte benutzt man als Ziel ein Dateisystem, was beides (Deduplication und Compression) selbst kann, also bspw. ZFS oder BTRFS mit dduper. Egal ob ZFS, BTRFS oder zbackup: In deinem Fall würde ich direkt mit den rohen Images der SD-Karten arbeiten weil du dir dann auch keine Sorgen um Dateiberechtigungen oder -attribute machen musst. Nur falls das nicht klappt würde ich auf Dateiebene runter gehen. Gruß Jan -- He who loses his head is usually the last one to miss it. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo, Am 26. Juni 2020 14:10:02 MESZ schrieb Jan Ritzerfeld <suse@mailinglists.jan.ritzerfeld.org>:
Am Dienstag, 23. Juni 2020, 15:43:05 CEST schrieb Alex Winzer:
Hallo,
ich habe folgendes Anliegen/Problem:
Ich möchte gern alte Datenbestände von meinen Navigationssystemem sichern. Diese sind auf SD-Karten und nehmen ca. 16 GB Platz ein. Insgesamt 3 Stück also mehr als 42 GB. Dazu ist zu sagen, dass viele Daten/Dateien redundant sind. Mittels CloneSpy (aus der Windows-Welt und mangels Kenntnis von Alternativen), konnte ich Hardlinks anlegen lassen und das ganze so auf ca. 28 GB "verkleinern". ... (...). Hat da jemand einen Tipp, wie man das vielleicht kleiner bekommt?
Da du ja gerne das Prinzip verstehen willst: Das was du suchst heißt Deduplication, Google findet sehr viel dazu. Das macht man beispielsweise bei inkrementellen Backups. Und nicht unbedingt nur auf Dateiebene wie CloneSpy. Das würde dir nämlich nicht bei bspw. virtuellen Maschinen helfen, die als eine riesige Datei vorliegen in der sich nur einzelen Blöcke verändern. Solch große Dateien zerlegt man dann in viele kleine und verlinkt dann die identischen.
Mit http://zbackup.org/ kannst du angeblich alles mögliche zum Fraß vorwerfen und es dedupliziert, komprimiert und verschlüsselt (optional). Das letzte Release ist allerdings schon Jahre her gibt es aber direkt bei openSUSE.
Der Nachteil ist natürlich, dass du ohne zbackup nichts mehr mit den Daten anfangen kannst. Wenn man das aber gern möchte benutzt man als Ziel ein
Das mit dem zbackup fand ich interessant - bis ich dann darauf gestoßen bin, dass man damit keine einzelnen Dateien aus dem Backup wieder herstellen kann. Und mit fehlt der Platz, um mal eben knapp 3tb einzulesen und dann daraus eine Datei zu holen. Ich habe dafür seit einiger Zeit storeBackup, das komprimiert die Dateien (wahlweise) und dedupliziert auch mit Hardlinks. Das Ergebnis ist eine Struktur, die der original Verzeichnisstruktur gleicht und darin jede einzelne Datei mit gzip komprimiert. Dazu kommen noch ein paar Textdateien mit md5-Hashes. Man kann dann mit storeBackup entweder die gesamte Struktur restaurieren oder direkt auf System Ebene jede Datei lesen und mit gzip wieder dekomprimieren. Leider hat sich auch bei storeBackup seit 2014 nichts mehr getan, die Originalseite ist kaputt - aber soweit ich weiß ist das immer noch bei openSuse enthalten. Gruß Martin -- Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am Freitag, 26. Juni 2020, 15:30:49 CEST schrieb Martin Hofius:
(...). Das mit dem zbackup fand ich interessant - bis ich dann darauf gestoßen bin, dass man damit keine einzelnen Dateien aus dem Backup wieder herstellen kann. Und mit fehlt der Platz, um mal eben knapp 3tb einzulesen und dann daraus eine Datei zu holen.
Ja. Deswegen würde ich mir auch an Alex Stelle keine Mühe machen, zbackup auf Dateiebene zu nutzen sondern einfach die drei Images einwerfen.
Ich habe dafür seit einiger Zeit storeBackup, das komprimiert die Dateien (wahlweise) und dedupliziert auch mit Hardlinks. Das Ergebnis ist eine Struktur, die der original Verzeichnisstruktur gleicht und darin jede einzelne Datei mit gzip komprimiert. Dazu kommen noch ein paar Textdateien mit md5-Hashes. Man kann dann mit storeBackup entweder die gesamte Struktur restaurieren oder direkt auf System Ebene jede Datei lesen und mit gzip wieder dekomprimieren.
Genau. Benutze ich auch schon seit Jahren. Daher weiß ich auch ungefähr, wie man Deduplication implementieren kann. Ich brauche das insbesondere für meine virtuellen Maschinen. Aber auch sonst bringt das echt ne Menge, auch ohne Kompression. Auf die meisten Daten kann ich also ganz normal zugreifen, ich sichere über iSCSI auf eine mit YaST LUKS-verschlüsselte Partition auf meinem NAS.
Leider hat sich auch bei storeBackup seit 2014 nichts mehr getan, die Originalseite ist kaputt - aber soweit ich weiß ist das immer noch bei openSuse enthalten.
Diese Original-Seite ist AFAIK nur von einem User gewesen, daher kann der Autor daran leider nichts machen. Und ja, als Maintainer versuche ich ich das so lange wie möglich in openSUSE drin zu behalten. Aber mit der langen Zeit wird das leider nicht einfacher. Gruß Jan -- An optimist believes that we live in the best of all possible worlds, the pessimist FEARS it's true. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (5)
-
Alex Winzer
-
Jan Handwerker
-
Jan Ritzerfeld
-
Manfred Kreisl
-
Martin Hofius