Egal ob Desktop oder Server-PC mit Linux-Betriebssystem, es kommt immer mal der Moment, wo der derzeitige Speicher nicht mehr ausreicht und Platz geschaffen wird. Im besten Fall, fällt es einem früh genug auf und sorgt für weiteren Speicherplatz. Mir ist es bei meinem Webserver, auf dem Ubuntu Linux läuft, dass nur noch wenige Gigabyte Speicherplatz verfügbar waren und wenn der gegen Null läuft, dann laufen nur noch wenige Dienste fehlerfrei.
Um Platz zu schaffen und mir Aufwand zu ersparen, wollte ich einige Ordner und Dateien in ein komprimiertes Archiv packen. Konkret in ein mit GZip komprimierten Tar-Ball.
Linux / Unix-Befehl um zu schauen, ob das Archiv noch auf die Platte passen wird
sudo tar -cz /pfad/zu/meinem/ordner | wc -c | awk '{print $1/1024/1024}' # --> Anzeige in MebiByte
sudo tar -cz /pfad/zu/meinem/ordner | wc -c | awk '{print $1/1000/1000}' # --> Anzeige in MegaByte
Die Ausgabe ist entweder in MebiByte oder MegaByte angegeben. Falls Dich diese Unterscheidung jetzt überrascht, empfehle ich den Exkurs von Elektronik-Kompendium zu diesem Thema. Danach versteht man auch, warum die 1 TB SSD mit 931 GB vom Betriebssystem angezeigt wird.
Befehl auseinandergenommen und genau erklärt
Wenn Du hier mit Hilfe einer Suchmaschine gelandet bist, wird dich eventuell interessieren, wie der Befehl aus einzelnen Programmen und Parametern zusammengesetzt ist. Das hilft Dir in Zukunft eigene Befehle für das gewünschte Ergebnis selbst zusammen zubauen. Nicht jedes spezifisches, persönliches Problem lässt sich per Suchmaschine lösen, zugegeben viele, aber Du solltest auf Dauer auch wissen, was Du dort auf der Kommandozeile ausführst.
Das macht „tar -cz /pfad/zu/meinem/ordner“
Tar ist ein Packprogramm, dass von dem angegebenen Pfad, das kann ein Ordner oder Datei sein, ein Archiv erstellt (dafür der Parameter -c) und es mit GZip kompirmiert (dafür der Prarameter -z). Die Reihenfolge der Parameter spielt übrigens keine Rolle. Tar steht für Tape Archiver.
Das macht | (Pipe Zeichen)
Mit dem Pipezeichen bzw. dem senkrechtem Strich, wird die Ausgabe eines Programmes an das Nächste übergeben. In diesem Fall wird das erzeugte tar-Archiv nicht auf Festplatte geschrieben, sondern an das im Befehl nachfolgende Programm Wordcount (wc) übergeben.
Das macht „wc -c“
Word Count kann Zeichen, Wörter, Zeilen und Größe in Bytes einer Datei zählen. Da hier das erstellte Tar-Archiv mit dem Parameter „-c“ übergeben wird, wird die Größe in Bytes gezählt. Auch hier findest Du weitere Infos bei Ubuntuusers.de.
Das macht „awk ‚{print $1/1000/1000}'“
Awk ist ein Interpreter für die Programm-eigene Skriptsprache und rechnet hier das Ergebnis von Wordcount, dass „rüber gepipet“ wird, zwei mal durch tausend. Hier wäre es effizienter direkt durch eine Million zu teilen. Ich hab mich aber für zwei Divisionen entschieden, sodass direkt deutlich wird, dass von Byte in Kilobyte durch die erste Divison durch 1.000 umgewandelt wird und durch die zweite Division durch 1.000 das Ergebnis die Dateigröße in Megabyte darstellt. Sowas erhöht die Lesbarkeit und ob das nun ein paar Millisekunden länger dauert ist nur relevant, wenn die Operation sehr oft durchgeführt wird und die Zeit sich aufsummiert.
Das macht „# –> Anzeige in MebiByte“
Mit der Raute bzw. dem Hashtag werden Kommentare definiert, die nicht interpretiert werden. Hier in dem Beispiel wollte ich es ermöglichen den Befehl mit Hinweis auf die Umrechnung direkt in die Konsole / Terminal kopieren zu können.
Befehle können von allen (Unix-)Shells interpretiert werden
Die hier aufgeführten Befehle laufen unter allen Betriebssystemen, die der Single Unix Specification folgen oder sogar danach zertifiziert sind. Das heißt z.B. dass alle Linux-Derivate wie Ubuntu oder Manjaro, aber auch Mac OS X oder IBMs z/OS diese Befehle verstehen. Daher nicht in die Irre führen lassen, nur weil ich hier die gut erklärenden Wiki-Einträge von Ubuntuusers verlinke. Die Befehle laufen auf fast allem, was nicht Windows ist.