IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

13. diel - Linuxový terminál (Bash) - archivácia a kopresia

V minulej lekcii, Linuxový terminál (Bash) - Správa skupín a ACL , sme sa naučili vytvárať a spravovať skupiny. Ďalej sme si vysvetlili, akým spôsobom môžeme prideľovať práva jednotlivým užívateľom pomocou ACL.

V tejto lekcii sa naučíme ako vytvárať a pracovať s archívom dát. Inými slovami, naučíme sa zlúčiť niekoľko súborov alebo adresárov v jeden balíček. Archivácia je dôležitá a často používaná zručnosť napr. pri zálohovaní dát alebo manipulácii s viacerými súbormi naraz (napr. preposielanie po sieti). Následne si ukážeme ako čo najviac zmenšiť veľkosť takého archívu.

Kompresia

Kompresiou (tiež komprimáciou) sa snažíme spracovať dáta tak, aby sa zmenšila ich veľkosť. Môžeme sa stretnúť s pojmom kompresní poměr. Ide o pomer veľkosti skomprimovaného súboru k pôvodnému súboru. Čím vyšší pomer, tým viac sa komprimovaný súbor zmenší oproti pôvodnému súboru. V tejto lekcii sa budeme zaoberať hlavne bezstratovou kompresiou. To znamená, že pri dekompresii sa súbor či adresár rekonštruuje do pôvodnej veľkosti bez straty dát. V praxi sa využíva aj stratová kompresia. Používa sa napr. pri kompresii zvuku či videa, kde si straty dát nemusíme ani všimnúť. Výhodou je výrazne vyšší pomer kompresie (zmenšenie veľkosti súboru) ako pri bezstratovej.

Archivácia v grafickom prostredí

Najprv si ukážeme, ako archivovať súbor v grafickom prostredí (Nautilus). Na tieto účely si najskôr vytvoríme adresár Soubory/ do adresára Documents/.

mkdir /home/David/Documents/Soubory

Ďalej budeme potrebovať súbory, ktoré budeme archivovať. Tie môžeme vytvoriť priamo v Nautiluse alebo pomocou príkazu touch.

touch index.html style.css script.js

Otvoríme si adresár Soubory/ a vidíme tu naše tri vytvorené súbory. V grafickom prostredí prebieha archivácia podobne ako na iných operačných systémoch. Klikneme pravým tlačidlom na požadovaný súbor, zvolíme možnosť Compress… a vyberieme druh kompresie.

komprimácia v Nautiluse - Základy Linuxu

Archivovať je možné aj viac súborov naraz. Stačí označiť všetky požadované a ďalej pokračovať rovnakým spôsobom. Archivovať je možné samozrejme aj celé adresáre či adresárovú štruktúru.

Dekompresia v Nautile

Pre dekompresiu súboru, pravým tlačidlom klikneme na archív a zvolíme extrahovat.

Archivácia v Termináli

Tar

Najpoužívanejší nástroj pre archiváciu súborov v textovom rozhraní Linuxu je program tar. Jeho výhodou je, že archivácia sa vykoná vrátane nastavenia vlastníctva a oprávnenia súborov a adresárov a býva súčasťou väčšiny distribúcií.

Archivácia programom tar

Najprv v termináli prejdeme do adresára Soubory/ vytvorenom v predchádzajúcej časti. Príkazom ls si overíme, že tu máme tri súbory. Ak nie, vytvoríme ich. Archiváciu vykonáme pomocou príkazu tar s prepínačom -cf (create file). Za ním nasleduje názov archívu a nakoniec archivovaný súbor alebo adresár. Celý príkaz teda vyzerá takto:

tar -cf archiv.tar index.html

Súbor s názvom index.html je teraz archivovaný v súbore archiv.tar.

Rovnako ako v Nautile aj v termináli je možné archivovať niekoľko súborov naraz.

tar -cf archiv.tar index.html style.css script.js

Možno samozrejme použiť aj regulárne výrazy na uľahčenie zápisu. Ak chceme napr. archivovať iba súbory s príponou .html, príkaz bude vyzerať nasledovne:

tar -cf archiv.tar *.html

Ak vytvoríme v rovnakom adresári znova súbor s názvom archiv.tar, prepíšeme ten pôvodný.

Ignorovanie masky

Pridaním prepínača -p sa pri následnom rozbalení ignorujú masky. To znamená, že sa zachovajú pôvodné užívateľské oprávnenia bez ohľadu na to, kam sa archív rozbaľuje.

tar -cpf archiv.tar *.html

Odporúčam prepínač -f umiestniť vždy na koniec radu. V niektorých prípadoch by inak proces nemusel fungovať.

Zobrazenie obsahu archívu

Sú dve varianty, ako zobraziť obsah archívu. Prvá je pomocou prepínača -tf.

david@david:~/Documents/Soubory$ tar -tf archiv.tar

index.html
script.js
style.css

Druhý variant je pomocou less.

david@david:~/Documents/Soubory$ less archiv.tar

-rw-rw-r-- vf/vf             0 2022-09-01 11:58 index.html
-rw-rw-r-- vf/vf             0 2022-09-01 11:58 script.js
-rw-rw-r-- vf/vf             0 2022-09-01 11:58 style.css

Odstránenie súboru z archívu

Súbory obsiahnuté v archíve môžeme jednotlivo vymazať. Pokiaľ sa rozhodneme, že z nášho archívu chceme vyradiť súbor script.js, použijeme voľbu --delete -f.

tar --delete -f archiv.tar script.js

Po výpise obsahu archívu zistíme, že tento súbor v ňom už nie je.

Pridanie súboru do existujúceho archívu

Pokiaľ nastane situácia, že potrebujeme zahrnúť nový súbor do už existujúceho archívu, využijeme prepínač -rf. Súbor script.js teraz vložíme späť do nášho archívu.

tar -rf archiv.tar script.js

Vypísaním obsahu archívu si opäť overíme, či akcia prebehla úspešne.

Extrahovanie archívu

Pre extrahovanie archívu slúži prepínač -xf.

tar -xf archiv.tar

Treba dať pozor, kam archív extrahujeme. Ak bude cieľový adresár obsahovať súbory alebo adresáre s rovnakým názvom ako v archíve, extrahovaním sa prepíšu. To naopak môže byť žiaduce, ak obnovujeme dáta zo zálohy.

Ak chceme určiť iný adresár na rozbalenie archívu ako ten, v ktorom sa nachádzame, pridáme prepínač -C, potom zadáme relatívnu či absolútnu cestu.

tar -xf archiv.tar -C /home/David/Desktop

Kompresia programom tar

Program tar obsahuje niekoľko nástrojov na kompresiu. Všetky sú k nájdeniu v manuáli v sekcii Compression option. Najpoužívanejšie nástroje sú gzip a bzip2.

Gzip

Kompresia gzip umožňuje cca o 15% menší pomer kompresie ako bzip2. Na druhej strane spotrebuje výrazne menej operačnej pamäte v priebehu kompresie a je rýchlejšia. Je teda vhodná tam, kde je potrebná vysoká rýchlosť a nižšie nároky na operačnú pamäť. Archívy komprimované pomocou gzip majú väčšinou príponu .tar.gz alebo .tgz.

Kompresiu vykonáme použitím prepínača -z.

tar -czf archiv.tar.gz index.html style.css script.js

Linux si všeobecne, na rozdiel od Windows, na prípony súborov nepotrpí. Môžeme teoreticky zvoliť akúkoľvek príponu chceme, prípadne nepoužiť žiadnu. Identifikovanie súboru potom ale bude veľmi zložité. Je teda dobré zachovať konvencie.

Dekompresiu gzip archívu docielime zámenou prepínača -c za -x.

tar -xzf archiv.tar.gz

Bzip2

Kompresia pomocou bzip2 je náročnejšia na operačnú pamäť a doba kompresie je dlhšia ako u gzip. Pokiaľ toto nie je na prekážku, výsledný archív bude cca o 15 % menší. Súbor komprimovaný pomocou bzip2 spoznáme podľa prípony .bz2. Kompresiu docielime prepínačom -j.

tar -cjf archiv.tar.bz2 index.html

Dekompresiu opäť vykonáme prepínačom -x.

tar -xjf archiv.tar.bz2

Kompresia programom zip

Zip je najpoužívanejší formát archívneho súboru pre kompresiu dát. Na rozdiel od nástrojov programu tar, zip je multiplatformný. Je vhodný, ak plánujeme preniesť a použiť archív na Windows alebo MAC a naopak. Archívy zip nepodporujú informácie o vlastníctve a oprávnení v štýle Linuxu. Vlastníctvo je vždy nastavené užívateľovi, ktorý spúšťa príkaz. Pokiaľ však nemáme v pláne použiť archív na inej platforme, nástrojom gzip dosiahneme oveľa lepší pomer kompresie.

Ubuntu štandardne program zips obsahuje. Ak terminál vráti chybu:

bash: /usr/bin/zip: No such file or directory

je potrebné ho najskôr nainštalovať.

sudo apt install zip

Vytvorenie archívu zip

Príkaz pre kompresiu je podobný ako pri tar, len nie sú potrebné prepínače.

zip archiv.zip *

Regulárnym výrazom * sme si uľahčili prácu a označili všetko čo sa nachádza v danom adresári.

Pokiaľ zabudneme na príponu .zip, pridá sa k archívu automaticky.

Zobrazenie obsahu archívu zip

Pre zobrazenie obsahu archívu môžeme využiť less.

david@david:~/Documents/Soubory$ less archiv.zip

Archive:  archiv.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2022-09-01 11:58 00000000  index.html
       0  Stored        0   0% 2022-09-01 11:58 00000000  script.js
       0  Stored        0   0% 2022-09-01 11:58 00000000  style.css
--------          -------  ---                            -------
       0                0   0%                            3 files

Druhý variant je príkaz unzip s prepínačom -l (list).

david@david:~/Documents/Soubory$ unzip -l archive.zip

Archive:  archiv.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2022-09-01 11:58   index.html
        0  2022-09-01 11:58   script.js
        0  2022-09-01 11:58   style.css
---------                     -------
        0                     3 files

Rekurzívna kompresia

Často potrebujeme komprimovať adresár vrátane všetkých podadresárov. Zatiaľ čo pri tar toto nemusíme riešiť, pri zip to docielime prepínačom -r (recursive). Skúsime takto archivovať celý adresár Documents/ vrátane podadresára Soubory/.

zip -r archiv.zip Documents/

Zobrazením obsahu archívu si overíme úspešnosť operácie.

Zaheslování archívu zip

Ďalšou výhodou tejto archivácie je, že je možné nastaviť heslo. Heslo nezabráni napr. zmazaniu súboru z archívu, iba bude vyžadované pri extrahovaní súborov. Heslo nastavíme prepínačom -e (encript) pri vytváraní archívu. Presunieme sa späť do adresára Soubory/ a vytvoríme archív s heslom.

zip -e zaheslovaný_archiv.zip index.html

Po zadaní príkazu nás terminál vyzve na zadanie hesla.

Odstránenie súboru z archívu zip

Rovnako ako pri kompresii tar aj v tomto prípade môžeme odstrániť jednotlivé súbory z archívu. Na odstránenie súboru script.js z nášho archívu archiv.zip pridáme prepínač -d (delete).

zip -d archiv.zip script.js

Overíme si, že súbor v archíve už nie je.

Pridanie súboru do archívu zip

Pre pridanie nového súboru do existujúceho archívu slúži prepínač -u (update).

zip -u archiv.zip script.js

Opäť si overíme výpisom obsahu, že operácia prebehla úspešne.

Oprava poškodeného archívu zip

Môže sa stať, že sa súbory v archíve poškodia. Po pridaní prepínača -F (fix) sa program zip pokúsi archív opraviť a opravené súbory uložia do nového archívu. Nový archív definujeme --out opravený_archiv.zip.

zip -F archiv.zip --out opravený_archiv.zip

Po vypísaní obsahu adresára uvidíme, že vedľa pôvodného archívu sa vytvoril nový s názvom opravený_archiv.zip.

Dekompresia archívu zips

Súbory z archívu extrahujeme pomocou príkazu unzip.

unzip archiv.zip

V prípade zaheslovaného archívu nás terminál vyzve na zadanie hesla.

V ďalšej lekcii sa pozrieme detailnejšie na aplikácie. Vysvetlíme si, ako sa program v Linuxe distribuuje, kde je uložený, ako sa k nemu dostať a ako s ním pracovať.


 

Predchádzajúci článok
Linuxový terminál (Bash) - Správa skupín a ACL
Všetky články v sekcii
Základy Linuxu
Preskočiť článok
(neodporúčame)
Linuxový terminál (Bash) - Správa aplikácií
Článok pre vás napísal Václav Franz
Avatar
Užívateľské hodnotenie:
1 hlasov
Aktivity