Optymalne metody kompresji archiwów

Notatka opisuje kilka optymalnych algorytmów kompresji stosowanych do tworzenia archiwów. W szczególności pełniących rolę kopii zapasowej lub nośnika danych przekazywanych innym.

Aktualną wersję w formacie PDF możesz pobrać tu: [PDF]

Motywacja

Najczęściej stosowane algorytmy kompresji danych w systemach z rodziny UN*X takie jak bzip2 i gzip ze względu na swój wiek stały się nieefektywnym narzędziem archiwizacyjnym. Wprowadzenie na początku lat 2000 nowocześniejszych metod kompresji opartych o algorytm LZMA umożliwiło drastyczne (nawet do 70%) zmniejszenie przestrzeni dyskowej koniecznej do przechowywania tej samej ilości danych. Niesie to ze sobą możliwości obniżenia zarówno kosztów przechowywania danych, jak i obniżenia wagi szkodliwych substancji, które emitowane są do środowiska podczas ich transferu. Według uśrednionych szacunków pochodzących z badań[1] [2] przesłanie 1MB danych generuje około 10g CO2.

Proponowane metody kompresji

LZIP

Lzip jest algorytmem dostępnym na zasadach Powszechnej Licencji Wolnego Oprogramowania GNU (GPL). Został wdrożony do powszechnego użytku przez dystrybucje systemu GNU/Linux takie jak GNU Guix i Dragora; organizację IANA, która wykorzystuje go do dystrybucji bazy informacji o strefach czasowych oraz Parlament Europejski, który z jego wykorzystaniem publikuje zrzuty swojej bazy danych w formacie JSON.

Podstawowa implementacja lzip nie posiada obsługi wielu wątków procesora, wydłużając tym samym czas kompresji i dekompresji przetwarzanych danych. W repozytoriach wielu dystrybucji udostępniono pakiet plzip, który pozwala na równoległą kompresję archiwów z wykorzystaniem wielu wątków procesora.

Wśród narzędzi konsumenckich algorytm ten jest obsługiwany przez narzędzie kompresji środowiska graficznego GNOME, Midnight Commander oraz zmodyfikowaną wersję archiwizatora 7-zip dostępną również na platformę MS Windows.

Przykłady zastosowania

By skompresować dane za pomocą lzip stosujemy komendę:

tar cv katalog_z_danymi | lzip -c -f - > archiwum.tar.lz

Archiwum to możemy rozpakować za pomocą komendy:

tar xf archiwum.tar.lz

Stosując kompresję wielowątkową z plzip dobrze jest unikać mieszania z jednowątkowym tar, dlatego też kompresję wykonamy za pomocą komend:

tar cv katalog_z_danymi > archiwum.tar
plzip -c -f archiwum.tar > archiwum.tar.lz

a dekompresję wykonując:

plzip -d archiwum.tar.lz
tar xf archiwum.tar

Zstandard

Jest to algorytm opracowany przez pracowników Facebooka i opublikowany na zasadach licencji Otwartego Oprogramowania BSD. Wśród wdrażających go organizacji znajdziemy dystrybucję systemu GNU/Linux Archlinux. Jest on również rozważany jako domyślny format kompresji archiwów *.deb dystrybucji GNU/Debian i Ubuntu.

W repozytoriach dystrybucyjnych obecny jest jako pakiet zstd.

Przykład zastosowania

W celu utworzenia archiwum z wykorzystaniem zstd wykonujemy komendę:

tar cv katalog_z_danymi | zstd -c -z -q - > archiwum.tar.zst

Skompresowane pakiety rozpakowujemy za pomocą:

tar -I zstd -xvf archiwum.tar.zst

Podobnie jak algorytm Lzip, obsługiwany jest przez narzędzie archiwizacyjne środowiska GNOME, zmodyfikowaną wersję 7-zip oraz bazy danych AWS Redshift i RocksDB.

7-zip

Narzędzie wprowadzone na początku lat 2000, które jako jedno z pierwszych stosowało algorytm LZMA. Jest ono powszechnie dostępne na platformach MS Windows (na zasadach licencji LGPL/BSD/unRAR), macos (od wersji 1.0 jest to oprogramowanie własnościowe) oraz GNU/Linux (LGPLv2). Stanowi to ogromną zaletę jeśli kompresujemy nasze dane, by przekazać je współpracownikom i podwykonawcom.

Przykład zastosowania

By uzyskać siłę kompresji archiwum porównywalną z zaprezentowanymi wcześniej algorytmami, kompresję z wykorzystaniem 7zip przeprowadzimy za pomocą komendy:

tar cv katalog_z_danymi | 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -si archiwum.tar.7z

Archiwum dekompresujemy wywołując:

7z x archiwum.tar.7z
tar xf archiwum.tar

Porównanie skuteczności kompresji

Dla paczki logów osiągi wymienionych wcześniej komend prezentują się następująco:

473M    archiwum.tar
26M     archiwum.tar.gz
11M     archiwum.tar.lz
14M     archiwum.tar.zst
11M     archiwum.tar.7z

Dla zróżnicowanych plików użytkowników jednego z serwisów, zawierających dużo danych w postaci binarnej (pliki obrazów/PDF):

19G     files/
18G     files.tar
16G     files.tar.gz
12G     files.tar.lz
13G     files.tar.zst (najkrótszy czas kompresji)
11G     files.tar.7z

Kompresji do archiwum gzip dokonano z wykorzystaniem komendy:

tar cv katalog | gzip --best > archiwum.tar.gz

Pozostałe uwagi

Należy zauważyć, że ewentualne wdrożenie opisywanych algorytmów do kompresji logów odkładanych na serwerach może skutkować utratą kompatybilności z narzędziami takimi jak zcat, bzcat oraz fgrep, służącymi do szybkiego ich przeglądania i przeszukiwania z uwzględnieniem paczek po rotacji.

Więcej

BleachBit, bezpieczne usuwanie danych

Poniższy wpis przedstawia na razie najbardziej przydatną funkcję programu, która pozwoli na usunięcie plików w sposób niemożliwy do odzyskania. Z czasem będę go uzupełniał o opisy kolejnych funkcji.

Aktualną wersję poradnika w formacie PDF możesz pobrać tu: [PDF]

Opis programu

logo BleachBit to program oferujący przede wszystkim możliwość wyczyszczenia systemów
operacyjnych (MS Windows/macOS/Linux) ze zbędnych plików pozostających na dysku podczas normalnego użytkowania komputera. Dodatkową, ważną funkcją programu jest bezpieczne usuwanie plików i katalogów w sposób, który zaciera po nich wszystkie ślady i czyni je niemożliwymi do odzyskania.

Witryna oprogramowania: https://www.bleachbit.org/

Proces instalacji w systemie Windows

By pobrać pakiet instalacyjny BleachBit należy odwiedzić witrynę programu i pobrać archiwum w formacie .exe (pierwsza opcja na liście). Przeprowadzając normalny proces instalacji należy upewnić się, czy w dostępnych komponentach programu pozostała zaznaczona opcja „integrate shred”. Po zakończeniu instalacji zostanie uruchomiony program BleachBit.

Dla pozostałych systemów operacyjnych proces instalacji jest również standardowy, w przypadku macOS pobieramy właściwy pakiet instalacyjny i postępujemy z nim jak z każdym innym nowym programem. W przypadku systemów
GNU/Linux dokonujemy instalacji z repozytoriów naszej dystrybucji.

Bezpieczne usuwanie katalogów z dysku

Po uruchomieniu programu BleachBit z menu Plik wybieramy opcję Potnij katalogi:
Okno programu

Wybór katalogów do usunięcia

Zostanie nam wyświetlone okno, w którym wskazujemy katalog z danymi do usunięcia:
Wybór katalogu do bezpiecznego usunięcia

Potwierdzenie wyboru – decyzja, której nie możemy cofnąć

Przed rozpoczęciem usuwania zostaniemy poproszeni o potwierdzenie naszego wyboru. W tle wyświetli się lista katalogów i plików do usunięcia, która pozwoli nam na upewnienie się, że chcemy usunąć właściwe dane.

UWAGA: Po potwierdzeniu tej operacji usunięte dane stają się niemożliwe do odzyskania. Upewnij się, że ich usunięcie jest niezbędne, bądź posiadasz kopię zapasową.
Potwierdzenie wyboru

Proces usuwania i jego zakończenie

W trakcie usuwania BleachBit będzie nas informował o postępie usuwania danych. W zależności od ilości plików oraz struktury katalogów proces może potrwać od kilkunastu sekund do kilku godzin. Po jego wykonaniu na pasku postępu wyświetli się właściwy komunikat.
Zakończenie procesu

Więcej

15 października 2016 – BSidesWarsaw‬

Po raz piąty wystąpię z prezentacją podczas świetnego cyklu konferencji Security BSIDEs Edycja Polska.

Temat prelekcji: Podstawy cyberbezpieczeńśtwa
Socjotechniki są obecnie największym zagrożeniem, które dotyka nas jako użytkowników technologii. Co gorsza, niezaleznie od tego czy naszym telefonem jest nowy „smart-flagowiec”, czy Nokia 3310 – każdego dnia możemy stać się ofiarami wycieku wrażliwych danych. Słyszymy o nich niemal codziennie, a zbagatelizowanie takiego wirtualnego wydarzenia może sprowadzić na nas wiele problemów w realnym świecie. Podczas prelekcji przedstawię: przewodnik po najpowszechniejszych socjotechnikach, podstawy higieny związanej z wykorzystywaniem otaczających nas technologii oraz szybki kurs działania w przypadku wycieku danych.

Nagranie prelekcji:

Więcej

Migracja z ZSH do BASH

Ostatnio postanowiłem wrócić do basha, w związku z tym stanąłem przed problem migracji historii. Okazał się on trochę cięższy ze względu na dokładane przez zsh prefiksy do komend, np.:

: 2145123543:0;git push origin master

Ciąg cyfr przypadkowy, chodzi o pokazanie wzorca. Nie wiem do końca czy robi tak każda konfiguracja zsh. Ja akurat korzystałem z oh-my-zsh. By się go pozbyć i mieć swoją historię w bashu polecam następującą komendę:

cat ~/.zsh_history | sed 's/\:...........\:.\;//g' > ~/.bash_history

Usuwa ona prefix i po przeładowaniu basha mamy dostęp do naszej historii. Dodatkowym ułatwieniem, które lubię stosować w swoim korzystaniu z konsoli jest dopełnianie komendy na podstawie historii, na dowolnym etapie jej budowania za pomocą klawiszy strzałek „↑” i „↓”. Rozwiązanie to znajdziecie w moim repozytorium z plikami konfiguracyjnymi, w pliku .initrc, który należy umieścić w katalogu domowym.

Więcej

Migracja z CentOS na Scientific Linux

(tl;dr – przejdź do nagłówka „Procedura”)

Rozwiązanie jakim jest zmiana dystrybucji zastosowałem dla określonego w tytule przypadku, jednak z powodzeniem można zastosować je zarówno przy przesiadce z Red Hat Enterprise Linux (RHEL) na dowolną opartą na (i kompatybilną binarnie z) nim dystrybucję, jak i między nimi. Cały proces zawiera się w kilku prostych komendach. Kiedy to może się przydać?

Więcej

Ubuntu 12.10 wydane

tl;dr – Wczoraj pojawiło się nowe wydanie popularnej dystrybucji Ubuntu, skupiające się na zmianach w interfejsie użytkownika oraz postępującej integracji z usługami w chmurze.

Przygotowane przez firmę Canonical wydanie Ubuntu 12.10 zatytułowane zostało „Quantal Quetzal”. Przyjrzyjmy się nowościom wprowadzonym w wydaniu:

Przystosowanie do pracy w chmurze

Nowe wydanie zorientowane jest na lepszą współpracę z usługami w chmurze. Przeglądając sieć za pomocą Firefoksa na wielu stronach takich jak Youtube, Reddit, Gmail czy Facebook możemy zuważyć pojawiające się komunikaty z pytaniem o to, czy chcemy zainstalować dodatki umożliwiające nam szybszy dostęp do tychże usług. Możliwość ta dotyczy 30 popularnych serwisów internetowych. Zainstalowanie takiego dodatku powoduje pojawienie się w menu Unity odpowiednich skrótów:

Źródło: omgubuntu.co.uk

Więcej

Klimat na zmiany

Z końcem sierpnia sporo się zmieni w Laboratorium Technik Mobilnych BRAMA i zmieni się również u mnie. Już teraz zapraszam Was na pożegnalne spotkanie LwB, które odbędzie się w piątek, 31 sierpnia. Jak zwykle czekamy na Was od 10 do 22 i chcemy, by spotkanie to wspominali wszyscy.

W związku z moim również planowanym odejściem z laboratorium zwracać będę numer i sprzęt, który otrzymałem na potrzeby organizacji LwB oraz innych projektów. I to Tworzy kolejny klimat na zmiany.

Ostatnio przyszło mi się pożegnać też z moim HTC Desire. Tuż po zakończeniu się jego gwarancji płyta główna dotarła do stanu w którym wystarczy mu chwila trzymania go w rękach, czy uruchomienie nawigacji by wpadł w tzw. boot loop.

Zamówiłem już i otrzymam na początku tygodnia nowego smartfona Motorola Defy Mini. Po organizacji stoiska wolnościowego na Przystanku Woodstock sporo w moim poleganiu na smarttechnologii się zmieniło. Zastępczo korzystam z Nokii 1616 i korzystać będę dalej, ale o tym za moment.

Więcej

TPSA/Orange i GIMP, czyli rzecz o 5-ciu użytkownikach

TP S.A./Orange choć nie blokuje już GIMPa, dalej nie chce dać nam zapomnieć o tym jak traktuje swoich klientów. Ustami przedstawiciela tejże firmy wprost lekceważy ich, mówiąc „o wszystkich pięciu użytkownikach” popularnego programu graficznego GIMP.

Poniżej prezentuję rozwinięcie tematu zamieszczone na blogu Michała 'ryśka’ Woźniaka:

Niektórzy mogą jeszcze pamiętać, jak Telekomunikacja Polska (czyli dziś Orange) zablokowała stronę GIMPa — całkiem przypadkiem, blokując po prostu cały serwer, na którym była strona z malware.

Uczestniczyłem dziś w warsztacie Ministerstwa Administracji i Cyfryzacji na temat m.in. blokowania usług w sieci. Pojawił się temat informowania przez operatorów o blokowaniu danych treści „ze względów bezpieczeństwa”. Oczywiście operatorzy bronią się rękami i nogami (w pewnym zakresie słusznie, w pewnym zakresie bardzo nie).

Podniosłem argument, że informacja — choćby do adminów blokowanych serwerów — byłaby bardzo potrzebna, na przykład w sytuacjach takich, jak ze stroną GIMPa. W takiej sytuacji admin serwera mógłby przynajmniej:

  • poinformować swoich klientów, dlaczego ich strony są dla części użytkowników niedostępne;
  • zrobić coś z problematycznym klientem.
    Odpowiedź Telekomunikacji Polskiej/Orange, w osobie p. Tomasza Piłata?

    »Wszystkich pięciu użytkowników GIMPa było oburzonych«

    Po czym inny przedstawiciel TPSA/Orange zażądał „szacunku” do tej firmy i nieużywanie słowa „Tepsa”…

    Biorąc pod uwagę nie najlepszą historię Telekomunikacji Polskiej aka Orange w kontekście blokowania i ograniczania ruchu w ich sieci, powinni chyba być nieco ostrożniej dobierać słowa.

Gorąco zachęcam do promowania wpisu.

Więcej

Najbliższe atrakcje LwB

W najbliższym czasie w ramach Linuksa w Bramie ruszamy z cyklem warsztatów, podczas których postaramy się przekazać wszystkim zainteresowanym wiedzę z zakresu wykorzystania Linuksa i narzędzi WiOO do codziennych prac nie tylko w domu, ale również w pracy przy mniejszych i większych projektach. Kalendarz z najbliższymi atrakcjami prezentuje się następująco:

Więcej