Desiatky rokov sú tu s nami počítače, ktoré produkujú stále viac údajov. Zo začiatku išlo o relatívne malý počet súborov s relatívne malou veľkosťou. Na prenášanie údajov vtedy stačilo údaje iba kompaktnejšie zoradiť do archívu. Často sa tak súbory prenášali na páskových kazetách, ktoré sa v modernejšom prevedení používajú dodnes. Z pohľadu softvéru sa na takéto prenášanie údajov používal a stále sa používa populárny nástroj TAR (Tape ARchive), ktorý z množstva súborov a priečinkov dokáže vytvoriť jeden súbor s koncovkou .tar (archív).
Ako však množstvo údajov pribúdalo, bolo potrebné údaje nie len zoradiť do archívu, ale tiež ich ešte viac zmenšiť (stlačiť, zbaliť, spakovať, komprimovať), aby sa ich na jednu páskovú kazetu zmestilo viac. Preto vznikli nástroje ako gzip, bzip2, xz, lzip, lzma, zstd alebo compress. Tieto nástroje dokážu archív vytvorený pomocou nástroja TAR komprimovať tak, že výsledný súbor má menšiu veľkosť. Napríklad archív uložený v súbore archiv.tar s veľkosťou 1 GB bude mať po kompresii názov súboru archiv.tar.gz (použili sme nástroj gzip) a menšiu veľkosť 0,5 GB. Komprimovaním pomocou nástroja gzip sme teda v tomto príklade ušetrili až polovicu miesta.
Archivujeme pomocou nástroja GNU TAR
Dnes sa namiesto páskových kaziet bežne používajú iné offline či online úložiská, ale princípy archivácie a kompresie platia doteraz. Ukážeme si, ako v Ubuntu 20.04 použijeme archivačný nástroj GNU TAR vo verzii 1.30, ktorý je predinštalovaný na väčšine linuxových distribúcií.
V prvom rade je potrebné zabezpečiť aktuálnosť všetkých balíkov. Nainštalujeme teda všetok updatovaný softvér pomocou dvoch príkazov v jednej dávke:
sudo apt update && sudo apt upgrade
Ak systém nájde aktualizovateľné balíčky, takto sa opýta, či ich chcete začať inštalovať:
Do you want to continue? [Y/n]
Stlačíme kláves y
ak chceme začať aktualizačný proces alebo kláves n
, ak aktualizovať nechceme. Následne stlačíme kláves Enter
.
V domovskom priečinku vytvoríme štruktúru priečinkov a do nich stiahneme súbory, ktoré budeme archivovať a komprimovať:
mkdir -p ~/archiv/video ~/archiv/audio ~/archiv/obrazky ~/archiv/ostatne
curl -o ~/archiv/video/video.mp4 https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4
curl -o ~/archiv/audio/audio.mp3 https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_5MG.mp3
curl -o ~/archiv/obrazky/obrazok.jpg https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_2500kB.jpg
curl -o ~/archiv/obrazky/obrazok.png https://file-examples-com.github.io/uploads/2017/10/file_example_PNG_3MB.png
curl -o ~/archiv/obrazky/obrazok.svg https://file-examples-com.github.io/uploads/2020/03/file_example_SVG_30kB.svg
curl -o ~/archiv/ostatne/dokument.docx https://file-examples-com.github.io/uploads/2017/02/file-sample_1MB.docx
curl -o ~/archiv/ostatne/tabulka.xlsx https://file-examples-com.github.io/uploads/2017/02/file_example_XLSX_5000.xlsx
curl -o ~/archiv/ostatne/prezentacia.pptx https://file-examples-com.github.io/uploads/2017/08/file_example_PPT_1MB.ppt
Teraz uložíme celú štruktúru priečinkov spolu so súbormi z priečinka archiv
pomocou nástroja GNU TAR do archívu (súboru) s názvom archiv.tar (prvý riadok) a overíme, či súbor archiv.tar
obsahuje naozaj všetky priečinky a súbory v nich (druhý riadok). Nakoniec ešte necháme vypísať veľkosť súboru archiv.tar
(štvrtý riadok), aby sme ju mohli porovnať s veľkosťou priečinka archiv
(tretí riadok).
tar cf ~/archiv.tar ~/archiv
tar tf ~/archiv.tar
du -s ~/archiv
du -s ~/archiv.tar
Po porovnaní veľkosti priečinka archiv
a súboru archiv.tar
sme zistili, že sme po archivácii ušetrili zanedbateľne málo miesta. Výhoda však je, že máme celú štruktúru priečinkov so súbormi v jednom súbore (archiv.tar
) a môžeme ho tak jednoduchšie kopírovať.
Vytvorili sme archív, porovnali sme jeho veľkosť so súbormi v priečinku, a teraz vytvorený archív rozbalíme do priečinka archiv-tar
(prvý riadok). Overíme, či po rozbalení získame rovnakú štruktúru priečinkov so súbormi (druhý a tretí riadok):
tar xf ~/archiv.tar --one-top-level=archiv-tar
du ~/archiv
du ~/archiv-tar
Po rozbalení archívu do priečinku archiv
sme zistili, že priečinky archiv
a archiv-tar
sú rovnaké štruktúrou priečinkov so súbormi, a tiež sú identické veľkosťou. Celý archivačný proces (vytvorenie, zobrazenie obsahu a rozbalenie) teda prebehol správne.
Komprimujeme pomocou nástroja GNU TAR
Už sme spomínali, že vyhoda archívu spočíva v jednoduchšej manipulácii pri prenášaní údajov. K tejto výhode však pomocou komprimácie môžeme pridať aj ďalšie dve výhody: zmenšenie archívu (šetrenie úložného miesta), čo vedie k rýchlejšiemu prenášaniu údajov. Vytvorený archiv.tar môžeme komprimovať (zmenšiť, stlačiť, zbaliť, spakovať) rôznymi metódami. Najpoužívanejšie sú gzip, bzip2 a xz.
Vytvoríme archív, ktorý skomprimujeme metódou gzip (prvý riadok), potom metódou bzip2 (druhý riadok) a nakoniec metódou xz (tretí riadok):
tar cfz ~/archiv.tar.gz ~/archiv
tar cfj ~/archiv.tar.bz2 ~/archiv
tar cfJ ~/archiv.tar.xz ~/archiv
Vytvorené komprimované archívy si teraz porovnáme s nekomprimovaným archívom:
du -s ~/archiv.tar && du -s ~/archiv.tar.bz2 && du -s ~/archiv.tar.gz && du -s ~/archiv.tar.xz
a zistíme, že nekomprimovaný archív (archiv.tar
) má najväčšiu veľkosť. Komprimačné metódy archív zmenšili, pričom najmenej úspešná bola metóda bzip2 (archiv.tar.bz2), lepšie to zvládla metóda gzip (archiv.tar.gz
) a komprimačným víťazom sa stala metóda xz (archiv.tar.xz
). Okrem ušetrenej veľkosť treba brať do úvahy aj čas potrebný na komprimáciu. Spravidla viac ušetreného miesta znamená aj viac času, ktorý je potrebný na vytvorenie komprimovaného archívu.
V praxi sa môže archiv.tar.gz
skrátiť na archiv.taz
alebo archiv.tgz
. V prípade archiv.tar.bz2
ušetríme znaky krátkymi formami archiv.tb2
, archiv.tbz
, archiv.tbz2
aleob archiv.tz2
. No a archiv.tar.xz
zase zjednodušíme na archiv.txz
.
Tak ako pri nekomprimovanom archíve, aj pri komprimovaných archívoch je možné vypísať obsah archívu:
tar tfz ~/archiv.tar.gz
tar tfj ~/archiv.tar.bz2
tar tfJ ~/archiv.tar.xz
Rovnako je možné obsah komprimovaného archívu rozbaliť. Oproti nekomprimovanému archívu sa však komprimovaný archív môže rozbalovať viac či menej pomalšie:
tar xf ~/archiv.tar.gz --one-top-level=archiv-gzip
tar xf ~/archiv.tar.bz2 --one-top-level=archiv-bzip2
tar xf ~/archiv.tar.xz --one-top-level=archiv-xz
Komprimujeme pomocou nástrojov ZIP, RAR a 7-Zip
Veľmi rozšírený komprimačný formát je ZIP a v tieni jeho úspechu existujú tiež pomerne obľúbené RAR a 7z. Tieto 3 formáty vytvárame, prezeráme a rozbaľujeme pomocou nástrojov, ktoré bežne nie sú predinštalované. Aby sme ich teda mohli začať používať, musíme ich najskôr nainštalovať:
sudo apt install zip rar p7zip-full
Takto sa systém opýta, či ich vybraté balíčky chcete začať inštalovať:
Do you want to continue? [Y/n]
Stlačíme kláves y
ak chceme začať aktualizačný proces alebo kláves n
, ak aktualizovať nechceme. Následne stlačíme kláves Enter
.
Skomprimujeme priečinok archiv do formátov ZIP, RAR a 7z:
zip -r ~/archiv.zip ~/archiv
rar a ~/archiv.rar ~/archiv
7z a ~/archiv.7z ~/archiv
Zobrazíme obsah komprimovaných archívov:
unzip -l ~/archiv.zip
rar l ~/archiv.rar
7z l ~/archiv.7z
Zistili sme, že celá štruktúra priečinkov spolu so súbormi sú v archívoch prítomné, a tak ešte môžeme porovnať, ktorý komprimačný formát ušetrí viac miesta:
du -s ~/archiv.7z && du -s ~/archiv.rar && du -s ~/archiv.zip
Vyhral formát 7z, nasledovaný formátom RAR a v tesnom závese sa drží ZIP.
No a takto komprimované archívy ešte rozbalíme:
unzip ~/archiv.zip -d ~/archiv-zip
rar x ~/archiv.rar ~/archiv-rar/
7z x ~/archiv.7z -oarchiv-7z
Zhrnutie
Ukázali sme, ako v Linuxe zbaliť štruktúru priečinkov spolu so súbormi do jedného archívu pomocou nástroja GNU TAR vo verzii 1.30. Tiež sme archív komprimovali často používanými metódami gzip, bzip2 a xz. Do zoznamu komprimačných nástrojov sme zaradili aj nástroje ZIP, RAR a 7Zip.