Das Rätsel um den Speicherplatz

Während ich mir ein kleines Tool zum Auslesen des verwendeten Festplattenplatzes geschrieben habe, bin ich auf etwas gestoßen, was mich verwirrt hat. Eine Datei, die laut Finder 29kb groß ist, wurde von meinem Programm mit nur 8kb ausgewiesen. Zuerst glaubte ich mein Programm habe einen schwerwiegenden Fehler aber dies war nicht so. Was man doch nicht so alles im OS X entdecken kann was nicht beworben wird.
Nachdem ich alle Fehler in meinem Programm ausschließen konnte wurde das Terminal zur Hilfe genommen. Auf hier vermeldete ls mir eine Größe von 29kb, während du mir einen Bedarf von 2 Blöcken meldete. Da ein Block 4kb verwendet war die tatsächlich benutzte Größe damit wieder bei 8kb anstatt 29kb. Eine Überprüfung mit einem Texteditor hat mir inzwischen bestätigt, dass in der Datei tatsächlich 29000 Zeichen vorhanden waren. Wie also kann eine 29kb Datei nur 8kb auf der Platte einnehmen?

Hier gab es nur eine sinnvolle Lösung: Das Dateisystem selbst verwendet schon eine Kompression die man als Anwender nicht zu sehen bekommt.

Eine kurze Suche im Netz ergab dann tatsächlich, dass Apple dies in 10.6 mit eingebaut hat. Vermutlich um mit einem kleineren System werben zu können da man nun weniger Platz auf der Platte belegt. In Wirklichkeit waren die Dateien aber nur komprimiert. Nach ein paar weiteren Suchanfragen habe ich dann das sehr schöne Tool afsctool gefunden. Dieses kostenlose Tool kann verwendet werden um selbst die HFS+ Kompression zu nutzen oder zu prüfen.

Wichtig: Komprimierte Dateien per HFS+ können nur von MacOS 10.6+ gelesen werden. Wer seine Platte auch noch unter 10.5 oder älter verwenden will/muss darf diesen Tipp nicht verwenden.

Nun stand dem Speicherplatz einsparen nichts mehr im Wege. Da ich noch eine normale Festplatte verwende ist der Rechner mit Kompression sogar schneller da die kurze CPU-Dekomprimierung weniger Zeit verwendet als die eingesparte Lesezeit der Platte. Und ganz nebenbei hat man ein paar GB mehr Platz frei :-)
Wichtig ist dabei zu wissen, dass die Kompression nur ein einmaliger Vorgang ist. Sobald die Datei von einem Programm neu geschrieben wird ist die Kompression verschwunden. Insofern macht es nur Sinn Dateien zu komprimieren die nicht ständig geschrieben werden. Die Dokumente im Benutzerordner sind also eher nicht die Zielgruppe dieses Tools. Auch die Bilder, Filme oder Musikdateien lassen sich sicherlich kaum noch komprimieren und sollten nicht komprimiert werden. Das System und der Programmordner bieten sich aber an da hier meist nur gelesen wird und nicht sehr oft etwas verändert. Man benötigt zwar grundlegende Shell/Terminal-Kenntnisse für dieses Tool aber die sollte jeder MacOS Nutzer besitzen.

Ohne Terminal zahlt man sehr oft für Tools die man schon lange besitzt. Im AppStore habe ich schon einige Programme entdeckt, die sogar gut gekauft werden, obwohl man dies mit wenig Terminaleinsatz schon lange besitzt. Sicher ist eine schöne GUI die einem die Arbeit erleichtert ihr Geld wert, wenn dadurch aber gerade mal eine Zeile im Terminal ersetz wird ist dies für mich eher Betrug am Kunden. Aber hier muss jeder selbst entscheiden, ob man bereit ist für etwas Geld auszugeben, was man sich in wenigen Stunden beibringen könnte...

Mir hat das schöne Tool afsctool per Terminal jedenfalls einige GB Platz geschenkt. Den Programmordner kann man z.B. mit dieser Zeile komprimieren:
  • afsctool -cfv /Applications/

Solange nicht eine Fehlfunktion im Tool auftritt dürfte hier auch nichts passieren. Im schlimmsten Fall bringt es nicht viel oder wieder mit einer unkomprimierten Version der Datei überschrieben. Sollte sich die Kompression auf die Geschwindigkeit negativ auswirken kann sie jederzeit wieder entfernt werden.