
In der Vergangenheit habe ich mit ein Backup einer teilweise vollen Partition erstellt dd if=/dev/sda1 | gzip -5 > file.gz
. Einige Zeit später, als der freie Speicherplatz auf der Partition kleiner war, habe ich mit demselben Befehl erneut eine Image-Datei erstellt und die Ausgabedatei ist etwas kleiner.
In beiden Fällen habe ich dieselbe Version von dd und gzip, dieselben Parameter, dieselbe Hardware und dieselbe Partition verwendet und ich habe von dd dieselbe Ausgabe (außer Zeit und Geschwindigkeit) bezüglich der Anzahl der ein-/ausgehenden Datensätze und der kopierten Bytes erhalten.
Was könnte die Ursache dafür sein und wie lässt sich das erklären? Wie kann ich feststellen, welche Image-Datei ungültig ist, vorausgesetzt, dass eine davon ungültig ist? Was ist wahrscheinlicher: eine Beschädigung der Festplatte, die zu einem unentdeckten Datenverlust geführt hat, oder dass ein Unterschied mit Problemen bei der Komprimierung zusammenhängt?
Antwort1
Das liegt in der Natur der Komprimierung. Wie effektiv sie ist, hängt von den Eingabedaten ab. Da Sie jedes Mal unterschiedliche Daten komprimiert haben, erhalten Sie unterschiedliche komprimierte Größen, obwohl die unkomprimierte Größe dieselbe ist.
Antwort2
Sie scheinen zu glauben, dass freier Speicherplatz besser komprimiert werden kann. Eine solche Regel gibt es nicht.
Gängige Dateisysteme markieren freien Speicherplatz nur als frei, sie überschreiben ihn nicht mit Nullen oder Ähnlichem. Die alten Daten bleiben erhalten, bis sie durch neue überschrieben werden. (Randbemerkung: Aus diesem Grund ist es manchmal möglich, gelöschte Dateien wiederherzustellen.)
dd
liest alles, weiß nichts über Dateisysteme oder was sie als freien Speicherplatz betrachten; gzip
komprimiert dann alles, einschließlich der alten Daten im „freien Speicherplatz“, die sich gut oder schlecht komprimieren lassen können. In diesem Kontext gibt es keinen freien Speicherplatz; es gibt nur einen Datenstrom zu verarbeiten.
Möglicherweise haben einige neue „hoch komprimierbare“ Dateien alte „schlecht komprimierbare“ Daten ersetzt, die als freier Speicherplatz markiert waren. Wenn das der Fall ist, ist das neue Archiv kleiner als das alte, obwohl es mehr Daten enthält, die Sie für nützlich, aktuell oder vorhanden halten. Dies kann die Hauptursache für das sein, was Sie erlebt haben.
Bitte beachten SieNur den verwendeten Speicherplatz von der Festplatte klonen, Undmeine Antwort dort. Der Schritt „Vorbereitung“ überschreibt leeren Speicherplatz mit Nullen, sodass er extrem gut komprimiert wird. Wenn Sie dies vor jedem Backup tun würden, würden die Größen der resultierenden Archive wahrscheinlich mit Ihrer Intuition übereinstimmen.
"Vielleicht weildie andere Antwort auf deine Frageist im Allgemeinen richtig: Es hängt alles von den Eingabedaten ab. Selbst nach dem Nullsetzen des freien Speicherplatzes kann ein zu 60 % gefülltes Dateisystem zu einem kleineren Archiv komprimiert werden als ein gleich großes, zu 50 % gefülltes Dateisystem, wenn die darin enthaltenen Dateien unterschiedlich sind.