Hlavní navigace

Tip pro diskový prostor

Boleslav Bobčík

Určitě jste se již dostali do situace, kdy vám váš harddisk začal být těsný a přemýšleli jste, jak nějaký ten MB prostoru ušetřit. Dnes přinášíme jeden užitečný tip, který vám může pomoci.

Pevné disky jsou sice každým měsícem větší a větší, ale nekonečnou kapacitu asi ještě nějaký čas mít nebudou. Někdy se hodí, aby software nezabíral ani kilobajt navíc (pokud jste třeba provozovatel webhostingové služby, jistě raději diskový prostor pronajmete, než aby doslova ležel ladem). Přitom množství standardně instalovaného softwaru se chová poměrně nešetrně, protože obsahuje informace pro ladění programů. Ty jsou potřeba jen pro programátory v situaci, když hledají chyby. Běžný uživatel (jestli lze uživatele Linuxu nazvat běžný) často ani neví, že něco takového existuje.

O tom, jestli i ve vašem systému nejsou programy s těmito přebytečnými daty, se můžete přesvědčit velice jednoduše. Stačí v příslušném adresáři, například /bin, provést:

$ file * | egrep 'executable'

Na vysvětlenou pro méně zkušené: program file odhaduje podle obsahu souboru, v jakém je formátu. Rozpoznává mnoho grafických, zvukových a dalších formátů, pro nás jsou podstatné linuxovské spustitelné programy. Dozvíme se totiž i to, které soubory obsahují ladicí informace: ve výpisu se objeví „not stripped“.

Pokud jsme nějaké soubory obsahující balast objevili, máme samozřejmě možnost zmenšit je na přijatelnou (to jest minimální) velikost. K tomu slouží program strip, součást programátorských nástrojů (binutils). Jeho funkcí je odstranění tabulky symbolů z programových modulů, tedy i přímo z programů.

Nejprve, jako dobře vychovaní administrátoři, všechny programy z cílového adresáře zazálohujeme, abychom měli ústupovou cestu v případě nějaké chyby. Pak v tomto adresáři provedeme trochu komplikovanější operaci:

$ for SOUBOR in *; do \
      (file $SOUBOR | egrep 'executable.*not stripped' > /dev/null) \
          && strip -S $SOUBOR; \
  done

Každý soubor v cílovém adresáři takto otestujeme, zda jeho identifikace programem file určuje spustitelný program s ladicími údaji. Z nalezených cílů pak tento balast odstraníme. Tento postup je po malých úpravách možné použít i na sdílené knihovny, které také často obsahují (z neprogramá­torského hlediska) odpad.

U běžných linuxových utilit obvykle příliš velkou úsporu místa nezískáme, bude se jednat o několik kilobajtů. U rozsáhlých programových balíků bude ovšem rozdíl velmi zřetelný. Například modul jazyka PHP pro www server Apache má po kompilaci velikost asi 4 MB. Po odstranění ladicích informací zjistíme, že zabírá jen necelé 2 MB.

Našli jste v článku chybu?