![Gibt es eine Möglichkeit abzuschätzen, wie viel Speicherplatz eine Datei oder ein Verzeichnis einer bestimmten Größe nach der Komprimierung mit Tar und Bzip2 einnimmt?](https://rvso.com/image/1607088/Gibt%20es%20eine%20M%C3%B6glichkeit%20abzusch%C3%A4tzen%2C%20wie%20viel%20Speicherplatz%20eine%20Datei%20oder%20ein%20Verzeichnis%20einer%20bestimmten%20Gr%C3%B6%C3%9Fe%20nach%20der%20Komprimierung%20mit%20Tar%20und%20Bzip2%20einnimmt%3F.png)
Aufgrund eines bevorstehenden Distributionswechsels möchte ich mein Home-Verzeichnis sichern. Allerdings ist mein Home-Verzeichnis 29 Gigabyte groß. Ich möchte wissen, wie viel Platz es nach der Komprimierung mit einnehmen würde tar cvjf home.tar /home
. Gibt es eine Möglichkeit, mit der ich die Größe nach der Komprimierung ermitteln kann?
Antwort1
Das Tool wird tar
(mit bzip2
impliziter Beteiligung, da Sie es verwenden) an (ein Standardtool (POSIX) zum Zählen von Bytes) j
weitergeleitet . Der folgende Befehl gibt die Größe in Bytes aus:wc
tar cj /home | wc -c
Der Befehl erledigt tatsächlich (und ich zitiere hier eine andere Antwort) „die gesamte Arbeit des Komprimierungsprogramms, ohne das endgültige Archiv zu schreiben, was Zeitverschwendung wäre“; aber wenn Sie es wirklich wissen wollen, dann ist dies der einzig sichere Weg.
Sie können den Gesamtansatz folgendermaßen verbessern:
tar cj /home | tee home.tbz2 | wc -c
- Wenn Sie Glück haben und der Ihnen zur Verfügung stehende Speicherplatz
home.tbz2
ausreicht, wird kein Fehler angezeigttee
und die Datei hat am Ende die gleiche Größe wie diewc -c
gemeldete. - Andernfalls
tee
wird gemeldetno space left
, aber es wird weiterhin in die Standardausgabe geschrieben.wc -c
wird Ihnen sagen, wie groß die Datei wäre. Die eigentliche (unvollständige) Datei wird kleiner sein und Sie sollten sie anschließend löschen.
Bei der Verwendung tar
von v
kann es sein, dass Ihnen eine no space left
Nachricht entgeht. Sie können dennoch feststellen, was passiert ist, indem Sie die Ausgabe, die Sie von erhalten haben, wc -c
mit der tatsächlichen Größe von vergleichen home.tbz2
. In Bash können Sie den Beendigungsstatus von tee
mit abrufen ${PIPESTATUS[1]}
.
Antwort2
Leider nein. Die einzige Möglichkeit, die Größe eines komprimierten Archivs zu ermitteln, besteht darin, das komprimierte Archiv zu erstellen. Es gibt kein Tool, das dies tun könnte, da das Tool die gesamte Arbeit des Komprimierungsprogramms übernehmen würde, ohne das endgültige Archiv zu schreiben, was Zeitverschwendung wäre.
Vielleicht sollten Sie Ihre Daten in überschaubare Teile aufteilen und mehrere Archive erstellen. Auf diese Weise können Sie die große Zeit, die zum Archivieren von 29 GB benötigt wird, in kleinere Abschnitte aufteilen.
Antwort3
Es ist nicht möglich, mit Sicherheit zu wissen, auf welche Größe Daten komprimiert werden, ohne sie tatsächlich zu komprimieren. Sie können eine fundierte Schätzung basierend auf dem Inhalt Ihres Home-Verzeichnisses vornehmen. Mir sind keine Tools bekannt, die dies automatisch erledigen, aber es ist kein schwieriger Vorgang.
Viele moderne Dateiformate sind bereits komprimiert, d. h. eine erneute Komprimierung bringt wenig bis gar keinen (oder negativen) Nutzen. Bei diesem Datentyp ist es besser, die Komprimierung zu überspringen und die Daten einfach so zu kopieren oder zu archivieren, wie sie sind. Beispiele hierfür wären komprimierte Videos (mp4, webm, mov usw.), komprimierte Bilder (jpeg, png usw.), vorhandene Archive (zip, rar, gz, bz2 usw.) und mehr.
Textdateien lassen sich im Allgemeinen recht gut komprimieren, insbesondere wenn viele wiederholte Daten vorhanden sind (z. B. Protokolldateien). Sie können versuchen, eine Teilmenge von Dateien zu testen, um zu sehen, wie sie komprimiert werden, und dies als Schätzung verwenden oder etwa 50 % als grobe Schätzung verwenden.
Prüfen Sie abschließend, welcher Anteil Ihrer Daten aus welchen Typen besteht, und multiplizieren Sie diesen Wert mit Ihrem geschätzten Prozentsatz, um eine Schätzung Ihrer endgültigen Größe zu erhalten. Wenn beispielsweise 20 GB Ihrer Daten komprimierte Daten und 9 GB Textdateien sind, liegt Ihre endgültige komprimierte Datengröße wahrscheinlich zwischen 21 GB und 25 GB.