Ustvarjanje in razpakiranje arhiva tar.gz v Linuxu

Linux Branje: 3 min

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 je tar -cfz w.tgz weboldal ustvaril arhiv z imenom z, w.tgz pa 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.

Nazaj: Linux – članki (76)