Razpakiranje datoteke ZIP v določeno mapo

Linux Branje: 2 min

Pogosta naloga je, da je treba preneseno ali naloženo datoteko ZIP (na primer predlogo WordPress, varnostno kopijo spletne strani ali namestitveni paket aplikacije) na strežniku razpakirati v določen imenik. Za to datoteke ni treba prenesti na svoj računalnik: ko si prijavljen prek SSH, jo lahko v izbrano mapo razpakiraš tudi v ukazni vrstici.

Namestitev unzip

Datoteke ZIP razpakira ukaz unzip. V veliko sistemih je privzeto nameščen, v minimalnih namestitvah strežnikov pa pogosto manjka; na cloud image AlmaLinux 10 na primer nista bila nameščena niti unzip niti zip. Če ukaz vrne napako command not found, ga namesti:

sudo apt install unzip      # Debian, Ubuntu
sudo dnf install unzip      # AlmaLinux, Rocky Linux

Na deljenem gostovanju sudo ni, tam je unzip običajno že na voljo.

Razpakiranje v določeno mapo

Privzeto unzip razpakira v trenutni imenik. S stikalom -d določiš ciljno mapo:

unzip fontosfajl.zip -d /var/www/teszt

Če ciljna mapa ne obstaja, jo unzip ustvari, a le zadnjo raven. Če ne obstajajo niti nadrejeni imeniki, se ukaz ustavi z napako checkdir: cannot create extraction directory: … No such file or directory (tako je bilo v preizkusu). Takrat najprej z ukazom mkdir -p ustvari celotno pot:

mkdir -p /var/www/teszt/uj/mappa
unzip fontosfajl.zip -d /var/www/teszt/uj/mappa

Ogled vsebine pred razpakiranjem

Dobro je najprej pogledati, kaj je v arhivu, ker veliko datotek ZIP vsebuje lastno korensko mapo (na primer sablon/), zato pridejo datoteke za eno raven globlje, kot bi pričakoval:

unzip -l fontosfajl.zip

Uporabna stikala

  • -o: obstoječe datoteke prepiše brez vprašanja.
  • -n: obstoječih datotek nikoli ne prepiše, razpakira le manjkajoče.
  • -q: tihi način, datotek ne izpisuje posamično.
  • -j: zgradbo imenikov izpusti, vse datoteke pridejo neposredno v ciljno mapo.
  • Razpakiranje ene datoteke: unzip fontosfajl.zip wp-config.php -d /tmp/. Datoteko navedi natanko s potjo, s katero jo izpiše unzip -l: če je v arhivu korenska mapa, na primer oldal/wp-config.php. S stikalom -j pride datoteka brez zgradbe map neposredno v ciljno mapo.

Če ne navedeš stikala -o ali -n in je v ciljni mapi že istoimenska datoteka, unzip pri vsakem sporu vpraša ([y]es, [n]o, [A]ll, [N]one, [r]ename).

Preverjanje in dovoljenja

Po razpakiranju lahko datoteke preveriš z ukazom ls -la /var/www/teszt. Če si kot uporabnik root razpakiral v imenik spletne strani, so datoteke v lasti uporabnika root in spletni strežnik vanje ne bo mogel pisati. Nastavi ustreznega lastnika in dovoljenja z ukazoma chmod in chown.

Pogoste napake

  • End-of-central-directory signature not found: datoteka je poškodovana ali ni bila v celoti prenesena, morda sploh ni v obliki ZIP. Ukaz file fontosfajl.zip pokaže njeno pravo vrsto: če je na primer HTML document, je prenos namesto datoteke prinesel stran z napako. Okrnjen ZIP pa file tudi pokaže kot ZIP (v preizkusu je bil tudi prepolovljen arhiv „Zip archive data”), takrat njegovo velikost primerjaj z izvirnikom in ga prenesi znova.
  • Zmanjkalo je prostora: razpakirana vsebina je lahko precej večja od datoteke ZIP. Prej z ukazom df -h preveri prosti prostor.

O upravljanju arhivov .tar.gz govori naš članek o ustvarjanju in razpakiranju arhiva tar.gz.

Nazaj: Linux – članki (76)