BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Ausführbare Binärdatei komprimieren

Will man eine ausführbare Binärdatei komprimieren, weil man auf einem Speichermedium nur beschränkt Platz hat, kann man dies mit gzexe tun. Im folgenden Beispiel befindet sich nslookup, welches 1.1MB gross ist, in einem Verzeichnis:

# ls -l
total 1104
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:47 nslookup*
# file nslookup
nslookup: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped

Nun wird die Datei komprimiert:

# gzexe nsloopkup 
nsloopkup: 58.4%
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:40 nslookup*
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:40 nslookup~*

Die ursprüngliche Datei hat nun eine Tilde am Ende des Dateinamens. Die komprimierte Datei ist über die Hälfte kleiner als das Original, kann jedoch immer noch ausgeführt werden, allerdings mit einem kleinen Performanceverlust:

# file nslookup
nslookup: Bourne shell script text executable
#./nslookup chruetertee.ch
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: chruetertee.ch
Address: 217.150.245.53

Die originale Datei kann nun gelöscht werden.

# rm nslookup~

Möchte man die originale Datei wiederherstellen, verwendet man die -d Option von gzexe:

# gzexe -d nslookup
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:54 nslookup*
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:51 nslookup~

Nun wird die komprimierte Datei mit einer Tilde markiert und kann gelöscht werden.

gzexe findet man sowohl auf FreeBSD als auch auf OpenBSD im Basissystem. Mehr Informationen zu gzexe findet man in der Manpage gzexe(1).

 Permalink

Comments

No new comments allowed (anymore) on this post.