V Linuxu je najbolj razširjena oblika arhiviranja datotek in map tar.gz (ali .tgz): program tar datoteke zbere v en arhiv, skupaj z dovoljenji in lastniki, gzip pa ga stisne. Pri varnostnih kopijah, selitvah in prenesenih programih ga srečaš najpogosteje. O upravljanju datotek ZIP govori članek Razpakiranje datoteke ZIP v določeno mapo.
Ustvarjanje arhiva
tar -czvf weboldal.tar.gz weboldal/
Pomen stikal:
-c(create): ustvarjanje novega arhiva,-z: stiskanje gzip,-v(verbose): izpiše obdelane datoteke (lahko ga izpustiš),-f: za njim sledi ime arhiva. To mora biti vedno na koncu stikal: v preizkusu jetar -cfz w.tgz weboldalustvaril arhiv z imenomz,w.tgzpa je obravnaval kot datoteko za pakiranje („Cannot stat: No such file or directory”).
Navedeš lahko tudi več datotek ali map:
tar -czvf mentes.tar.gz public_html/ adatbazis.sql .htaccess
Izpuščanje map in datotek
tar -czvf weboldal.tar.gz --exclude='weboldal/wp-content/cache' --exclude='*.log' weboldal/
Datum v imenu datoteke
Pri rednem varnostnem kopiranju je uporabno, če ime datoteke vsebuje datum:
tar -czf weboldal-$(date +%Y-%m-%d).tar.gz weboldal/
Razpakiranje arhiva
# Razpakiranje v trenutni imenik
tar -xzvf weboldal.tar.gz
# Razpakiranje v navedeni imenik (ciljni imenik mora obstajati)
mkdir -p /var/www/uj
tar -xzvf weboldal.tar.gz -C /var/www/uj
Če imenik, naveden za -C, ne obstaja, se tar ustavi s tem: tar: /var/www/uj: Cannot open: No such file or directory.
Stikalo -x (extract) pomeni razpakiranje. Razpakiranje brez vprašanja prepiše istoimenske datoteke v ciljnem imeniku.
Ogled vsebine brez razpakiranja
tar -tzvf weboldal.tar.gz
Stikalo -t (list) izpiše vsebino arhiva. Pred razpakiranjem je dobro pogledati, ali arhiv vsebuje mapo ali neposredno datoteke; v drugem primeru se datoteke razpršijo po trenutnem imeniku.
Razpakiranje ene same datoteke
Pot do datoteke navedi natanko tako, kot jo izpiše tar -tzf:
tar -xzvf weboldal.tar.gz weboldal/wp-config.php
Druge oblike stiskanja
Vrsto stiskanja določa stikalo:
| Končnica | Stikalo | Značilnost |
|---|---|---|
.tar.gz, .tgz |
-z |
hiter, na voljo povsod |
.tar.bz2 |
-j |
manjša datoteka, počasneje |
.tar.xz |
-J |
najmanjša datoteka, najpočasneje |
.tar.zst |
--zstd |
hiter in z dobrim stiskanjem; potreben je program zstd |
.tar |
(ni) | brez stiskanja |
Pri razpakiranju sodobni tar obliko prepozna sam, zato lahko stikalo za stiskanje tudi izpustiš:
tar -xvf archivum.tar.xz
tar za stiskanje kliče zunanji program. Na cloud image AlmaLinux 10 zstd privzeto ni bil nameščen: tar --zstd se je ustavil s tem: zstd: command not found. Namesti ga (sudo dnf install zstd oziroma sudo apt install zstd); gzip in xz sta povsod.
Stiskanje ene datoteke z gzip
Če želiš stisniti le eno datoteko (na primer varnostno kopijo podatkovne baze ali dnevniško datoteko), tar ni potreben:
# Stiskanje: namesto datoteke pride adatbazis.sql.gz
gzip adatbazis.sql
# Razpakiranje
gunzip adatbazis.sql.gz
# Stiskanje tako, da ostane tudi izvirnik
gzip -k adatbazis.sql
Dovoljenja in lastniki
tar v arhivu shrani dovoljenja in lastnika datotek. Ob razpakiranju lastnika obnovi le kot uporabnik root; kot navaden uporabnik razpakirane datoteke pridejo v last uporabnika, ki razpakira. V preizkusu je datoteka v lasti root/root (tako jo je pokazal tar -tvzf), razpakirana kot navaden uporabnik, postala last uporabnika. Če spletni strežnik po razpakiranju ne doseže datotek, preveri lastnika in dovoljenja (glej: Dovoljenja datotek (chmod, chown) v Linuxu).
Če navedeš absolutno pot (npr. tar -czf mentes.tar.gz /var/www), tar odstrani začetni znak / (in to tudi izpiše: tar: Removing leading `/' from member names), datoteke pa shrani pod imenom var/www/.... Ob razpakiranju zato datoteke nastanejo v trenutnem imeniku (ali na mestu, navedenem s stikalom -C) in ne prepišejo tistih na izvirnem mestu.