Ich habe eine Maschine mit 90% Festplattenauslastung. Ich möchte seine 500 Protokolldateien in eine kleinere neue Datei komprimieren. Die Festplatte ist jedoch zu klein, um sowohl die Originaldateien als auch die komprimierten Dateien zu speichern.
Ich muss also alle Protokolldateien nacheinander in eine einzelne neue Datei komprimieren und jedes einmal komprimierte Original löschen.
Wie kann ich das unter Linux machen?
Antworten:
gzip
oderbzip2
komprimiert die Datei und entfernt die nicht komprimierte automatisch (dies ist das Standardverhalten).Beachten Sie jedoch, dass während des Komprimierungsvorgangs beide Dateien vorhanden sind.
Wenn Sie Protokolldateien komprimieren möchten (dh Dateien, die Text enthalten), können Sie dies vorziehen
bzip2
, da das Verhältnis für Textdateien besser ist.Vergleich und Beispiele:
UPDATE, wie @Jjoao mir in einem Kommentar sagte,
xz
scheint interessanterweise das beste Verhältnis für einfache Dateien mit seinen Standardoptionen zu haben:Weitere Informationen finden Sie hier: http://binfalse.de/2011/04/04/comparison-of-compression/
Für das obige Beispiel verwende ich
-9
für ein optimales Komprimierungsverhältnis, aber wenn die zum Komprimieren von Daten erforderliche Zeit wichtiger ist als das Verhältnis, sollten Sie es besser nicht verwenden (verwenden Sie eine niedrigere Option, dh-1
oder etwas dazwischen).quelle
xz myfile
?xz
, aber ich werde es jetzt prüfen. Siehe das Update meines Beitrags.xz -9
. Es erhöht den für die Komprimierung / Dekomprimierung erforderlichen Speicher erheblich, ohne das Komprimierungsverhältnis wesentlich zu verbessern. Die Manpage sagt sogar (Betonung ihrer) "Insbesondere ist es keine gute Idee, blind -9 für alles zu verwenden, wie es oft bei gzip (1) und bzip2 (1) der Fall ist." Die Standardeinstellungxz -6
ist gut genug und komprimiert sogarxz -0
/xz -1
normalerweise besser alsgzip -9
.-9
, aber ich habe es hier verwendet, da ich eine Art Benchmark für das Kompressionsverhältnis "in der gleichen Größenordnung" erstellen wollte. Aber auch hier haben Sie völlig Recht: Es ist eine schlechte Idee, sie blind zu benutzen-9
.Ich habe selbst eine Teerlösung gefunden.
Einzelne Dateien werden gelöscht, nachdem sie in die Zieldatei komprimiert wurden.
Die Kompressionsgeschwindigkeit ist jedoch nicht sehr hoch. Der Befehl sieht folgendermaßen aus:
quelle
Ergänzend zu @apaul betone ich, dass Dateien einzeln komprimiert werden
(Ersetzen Sie bzip2 durch gzip, xz oder was auch immer Ihre Lieblingsdatei zip ist) kann wichtig sein:
Auf diese Weise können Sie die komprimierte Datei weiterhin anzeigen (
bzcat file.bz2
), durchsuchen (bzgrep file.bz2
), bearbeiten (vi file.bz2
) und bei Bedarf die älteren Dateien entfernen.quelle
Ich habe versucht, dies auf der BSD-Version von tar zu tun. In diesem Fall ist die Option --remove-files nicht verfügbar. Am Ende habe ich Folgendes gemacht (und gearbeitet):
quelle