xz vs. gzip – kompresja logów

Katalog z logami zawiera ponad 100.000 plików średniej wielkości 40kB każdy. Po spakowaniu każdego z tych plików gzip’em, wielkość spakowanego katalogu wynosiła ~1,9GB (jak zeznało du).
Zrobiłem eksperyment. Każdy z plików rozpakowałem:

# find . -type f -name "*.gz" -exec gunzip -v {} \;

a następnie spakowałem xz:

# find . -type f -name "*.txt" -exec xz -v {} \;

Spakowane w ten sposób plilki zajmują 818MB. Odzyskałem połowę miejsca zużytego przez te pliki. Właśnie robię test z plikami ~60kB w stanie bez kompresji i zobaczymy jak wyjdzie. Oczywiście, zdaję sobie sprawę, że ~800MB to w dzisiejszych czasach przestrzeń która nie powala na kolana, ale jeśli liczyć więcej plików i przestrzenie w TB, to różnica będzie na prawdę zauważalna.

Dla logrotate wystarczy w /etc/logrotate.conf wpisać:

compresscmd /usr/bin/xz

i cieszyć się oszczędnością przestrzeni. Wadą xz jest jak na razie brak wielo-wątkowości, co jest niestety dość boleśnie odczuwalne :(

3 thoughts on “xz vs. gzip – kompresja logów

  1. Inna maszyna. 364 plików z logami, przed kompresją: 2GB, po kompresji xz -9 : 80MB. Następnie rozpakowane i spakowane gzip -9 zajmują 105MB. Różnica niewielka, 1.3125 (jakieś 23,81%). Czas pakowania xz był kilkukrotnie większy niż w przypadku gzip’a.

    Te same ponad 100.000 plików po 40kB każdy (jak w pierwszym doświadczeniu) po rozpakowaniu zajmują 4,1GB. Każdy z nich zostanie spakowany xz -9 , jako że domyślny stopień kompresji dla xz (podobnie jak i dla gzip) to 6. Zajęte miejsce: 818M. Warto zatem korzystać z domyślnej wartości.

  2. A jak z czasem kompresji ? bzip2 też pakuje lepiej niż gzip z default-a, ale czas jest nieporównywalnie dłuższy szczególnie przy gigabajtowych plikach (np. z logami).

  3. bzip2 będę męczył po weekendzie, teraz mam wyjazd na tapecie :) Jeśli chodzi o czas, to dobrze jest uwzględnić nie tylko czas pakowania, ale i czas rozpakowywania. Będę miał to na uwadze robiąc testy. xz o wiele bardziej się wlecze przy kompresji.

    Odnośnie gigabajtowych plików – nie byłoby Ci wygodniej rotować logi codziennie (daily)? Plików jest więcej, ale czas ich obsługi znacznie się skraca, szczególnie jak potrzebujesz wyłuskać kilka danych z konkretnej godziny danego dnia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.