Su Linux, zip e unzip sono ancora utili quando devi scambiare archivi con ambienti misti, consegnare pacchetti leggeri a un cliente o raggruppare file mantenendo una compatibilità ampia. Non sono l’unica scelta possibile, e spesso non sono nemmeno la migliore per backup o distribuzione interna, ma restano uno standard pratico perché quasi ovunque trovi un supporto immediato. Il punto non è “sapere il comando base”, ma capire come usarlo senza creare archivi incompleti, senza includere file inutili e senza scoprire troppo tardi che il contenuto non si estrae come previsto.
Quando usare zip invece di tar
La differenza operativa è semplice: zip è comodo per la compatibilità, tar è più naturale nel mondo Unix. Se devi consegnare un archivio a un utente Windows, a un collega che usa macOS o a un servizio che accetta solo file .zip, la scelta è immediata. Se invece stai facendo backup di directory Linux con permessi, link simbolici e struttura complessa, tar.gz o tar.xz è spesso più sensato.
Zip comprime file singoli e directory in un formato molto diffuso, ma non conserva sempre tutti i dettagli Unix nel modo che ti aspetteresti. Le autorizzazioni di base vengono gestite, però il comportamento con owner, group e alcuni attributi dipende dal contesto e dal tool di estrazione. Per questo, prima di usarlo come formato di backup “serio”, conviene capire cosa stai perdendo.
Verificare la presenza dei comandi
Su molte distribuzioni moderne i pacchetti non sono installati di default. Prima di tutto verifica che zip e unzip siano presenti:
zip -v
unzip -v Se il comando non viene trovato, installa il pacchetto con il gestore della tua distro. Su Debian e Ubuntu:
sudo apt update
sudo apt install zip unzip Su RHEL, AlmaLinux, Rocky Linux e derivate:
sudo dnf install zip unzip Su Arch Linux:
sudo pacman -S zip unzip Il controllo iniziale non è un formalismo: in ambienti minimi, container o server ridotti, capita spesso di avere il sistema pronto ma non gli strumenti per comprimere o ispezionare archivi.
Creare un archivio zip da file singoli
Il caso più semplice è comprimere alcuni file in un archivio unico. La sintassi base è questa:
zip archivio.zip file1.txt file2.txt file3.log Il comando crea archivio.zip nella directory corrente. Se il file esiste già, zip lo aggiorna aggiungendo o sostituendo il contenuto indicato. Questo è utile, ma va usato con attenzione: non sempre è evidente se stai creando da zero o modificando un archivio già presente.
Se vuoi includere anche il percorso completo di una directory, puoi specificarlo direttamente:
zip archivio.zip /var/www/html/index.html In quel caso il percorso viene salvato secondo la logica del comando, non come copia letterale “assoluta” in stile filesystem. Per evitare sorprese, spesso è meglio entrare nella directory corretta e lavorare con percorsi relativi.
Comprimere directory intere con zip -r
Per archiviare una cartella completa serve il flag ricorsivo -r. È il comando che userai più spesso in pratica:
zip -r backup-sito.zip sito/ Questo include tutto il contenuto di sito/, sottodirectory comprese. Se la directory contiene file nascosti, vengono inclusi solo se il pattern o il percorso li prende esplicitamente; non dare per scontato che “tutto” significhi davvero tutto. È uno dei punti dove si commettono errori banali: backup apparentemente completi che poi escludono configurazioni cruciali perché erano file dotfile.
Se vuoi vedere cosa sta entrando nell’archivio mentre lo costruisci, aggiungi -v:
zip -rv backup-sito.zip sito/ L’output verboso è utile quando l’archivio è grande o quando devi capire se un file specifico è stato incluso. In troubleshooting, il dettaglio che serve spesso è proprio lì: nome del file, livello di compressione, eventuali file saltati.
Escludere file e directory indesiderati
Un archivio fatto male non è solo grande: è anche meno utile. Log temporanei, cache, directory di build e artefatti rigenerabili dovrebbero spesso restare fuori. Con zip puoi escludere elementi usando -x:
zip -r backup-sito.zip sito/ -x "sito/cache/*" "sito/logs/*" Il pattern è importante: le virgolette evitano che la shell espanda i glob prima del comando. Se devi escludere più elementi, puoi elencarli tutti nello stesso invocazione. In ambienti reali, questa è una differenza decisiva: comprimere un sito con log rotati e cache può aumentare inutilmente dimensione, tempo di esecuzione e rischio di includere dati sensibili.
Per capire cosa c’è dentro senza estrarre nulla, usa:
unzip -l backup-sito.zip La lista mostra dimensione, data e nome dei file. È il primo controllo da fare quando ricevi un archivio da terzi o quando vuoi verificare che il pacchetto sia coerente con quanto pensavi di aver creato.
Estrarre un archivio zip in Linux
Per decomprimere un archivio si usa unzip. Il caso base è:
unzip archivio.zip Il contenuto viene estratto nella directory corrente. Se vuoi destinare i file a una cartella specifica, usa -d:
unzip archivio.zip -d /tmp/estrazione Questa abitudine è utile per evitare di sporcare la directory di lavoro e per fare controlli in uno spazio temporaneo. Se stai analizzando un archivio non fidato, estrarre in una directory isolata riduce il rischio di sovrascrivere file importanti per errore.
Se il file zip contiene directory annidate, unzip le ricrea automaticamente. Se invece vuoi solo vedere cosa c’è dentro senza estrarre, il comando più utile resta:
unzip -l archivio.zip Sovrascrivere, aggiornare o saltare file già presenti
Durante l’estrazione, unzip può chiedere conferma se trova file già presenti. Questo è normale e spesso scomodo in automazione. Le opzioni principali sono:
- -o per sovrascrivere senza chiedere
- -n per non sovrascrivere file esistenti
- -u per aggiornare i file nell’archivio o nella destinazione, a seconda del contesto
Un esempio pratico con sovrascrittura automatica:
unzip -o aggiornamento.zip -d /var/www/app Se lavori su ambienti di produzione, l’opzione -o va usata con prudenza. È comoda, ma può sostituire file manualmente modificati o configurazioni locali non versionate. In un flusso controllato, meglio estrarre in una directory temporanea e confrontare prima di copiare in destinazione.
Proteggere un archivio con password
Zip consente di proteggere il contenuto con una password, ma questo non va confuso con una cifratura robusta da backup sensibili. La protezione base si imposta con -e:
zip -e documenti.zip documenti/*.pdf Il comando chiede la password in modo interattivo. Questo evita di scriverla in chiaro nella shell history, che è già una buona pratica. Se devi automatizzare e passi la password da variabili o script, stai creando un rischio che va valutato con attenzione: la password può finire in process list, log o file temporanei. In quei casi è meglio usare un sistema di distribuzione segreti più adatto, oppure un formato che supporti cifratura e gestione più controllabile.
Per estrarre un archivio protetto:
unzip documenti.zip Verrà richiesta la password. Se l’archivio è stato creato con password, verifica comunque il contesto: la sola protezione del file non sostituisce permessi filesystem, backup sicuri o controllo degli accessi sul server.
Controllare integrità e contenuto prima di estrarre
Quando ricevi un archivio esterno, non è una cattiva idea controllarlo prima di estrarlo. Il comando:
unzip -t archivio.zip esegue un test di integrità. Non ti dice se il contenuto è “giusto” dal punto di vista applicativo, ma verifica che l’archivio sia leggibile e che la struttura interna non sia corrotta. È un controllo rapido, utile soprattutto quando il file arriva via rete, da un upload o da un backup poco affidabile.
Se il test fallisce, non forzare l’estrazione a occhi chiusi. Prima verifica dimensione del file, checksum se disponibile e origine del pacchetto. Un archivio corrotto può indicare trasferimento incompleto, storage instabile o un problema più a monte nella catena di consegna.
Gestire file con spazi, caratteri speciali e percorsi lunghi
Molti problemi con zip non dipendono dal formato, ma dalla shell. Se i file contengono spazi, parentesi o caratteri speciali, devi quotare correttamente i percorsi:
zip -r archivio.zip "Documenti di lavoro/"
unzip "Archivio finale.zip" -d /tmp/estrazione La regola è semplice: se il nome non è banale, mettilo tra virgolette. Questo evita espansioni indesiderate e rende gli script più robusti. Se gestisci file generati automaticamente, conviene anche normalizzare i nomi in anticipo, così riduci il rischio di errori in pipeline e cron job.
Usare zip in script e automazione
In ambienti operativi, zip viene spesso usato in script di manutenzione, esportazioni periodiche o procedure di consegna. Un esempio minimale di script bash per archiviare una directory con timestamp:
#!/bin/bash
set -euo pipefail SRC="/var/www/app"
DEST="/backup/app-$(date +%F-%H%M%S).zip" zip -r "$DEST" "$SRC" -x "$SRC/cache/*" "$SRC/tmp/*" Qui ci sono tre elementi importanti. Primo: set -euo pipefail aiuta a far fallire lo script in caso di errore. Secondo: il nome dell’archivio include data e ora, così non sovrascrivi i backup precedenti. Terzo: escludi le directory temporanee per evitare peso inutile. Se il backup deve essere affidabile, aggiungi anche un controllo finale con unzip -t e un checksum separato.
Un esempio di verifica automatica dopo la creazione:
unzip -t "$DEST" Se il test passa, hai almeno una conferma tecnica minima che l’archivio sia leggibile. Non basta per dire che il contenuto sia utile, ma è un buon filtro operativo.
Riparare un archivio zip danneggiato
Se l’archivio risulta corrotto, zip offre anche strumenti di recupero limitati. Non aspettarti miracoli: se il danno è serio, il recupero può essere parziale. Il comando di base è:
zip -F archivio.zip --out archivio-riparato.zip In alcuni casi serve una modalità più aggressiva:
zip -FF archivio.zip --out archivio-riparato.zip Questo tipo di intervento ha senso solo se l’alternativa è perdere del tutto il contenuto o se devi tentare un recupero forense di file non sostituibili. Prima di usare le opzioni di fix, lavora sempre su una copia dell’archivio originale. Il rischio è semplice: se il tentativo fallisce o produce un file incompleto, vuoi conservare il sorgente intatto per ulteriori prove.
Permessi, metadati e limiti pratici
Uno dei malintesi più comuni è pensare che zip equivalga a un backup completo del filesystem. Non è così. I permessi possono essere conservati in parte, ma la portabilità del formato e il comportamento del tool di estrazione non garantiscono una replica perfetta dell’ambiente Unix originale. Se stai archiviando configurazioni di sistema, directory con owner specifici o contenuti che dipendono da ACL e attributi estesi, valuta bene se zip è davvero lo strumento giusto.
In un contesto di hosting o amministrazione server, zip è ottimo per trasferire pacchetti, condividere sorgenti, esportare documenti o raccogliere log. È meno adatto come unica strategia di disaster recovery. Per quello servono procedure più robuste, con snapshot, checksum, retention e test di restore. L’archivio compresso è solo un pezzo della catena.
Comandi essenziali da ricordare
Se devi portarti a casa solo i comandi davvero utili, questi coprono la maggior parte dei casi d’uso quotidiani:
zip archivio.zip file1 file2
zip -r archivio.zip cartella/
zip -r archivio.zip cartella/ -x "cartella/cache/*"
unzip archivio.zip
unzip archivio.zip -d /tmp/estrazione
unzip -l archivio.zip
unzip -t archivio.zip La logica è sempre la stessa: crea, verifica, estrai in modo controllato. Se usi zip dentro processi ripetibili, aggiungi sempre un controllo di contenuto e una destinazione esplicita. È il modo più semplice per evitare archivi confusi, estrazioni accidentali e corse tra versioni diverse dello stesso file.
In sintesi operativa, zip è uno strumento pratico e immediato, ma va trattato come tale: utile, compatibile, rapido da usare, però non magico. Se lo impieghi con attenzione sui percorsi, sugli esclusi, sulla verifica e sul contesto d’uso, ti semplifica davvero il lavoro. Se invece lo usi come scorciatoia indistinta per qualsiasi backup, prima o poi ti restituisce un archivio più grande del necessario o meno affidabile di quanto credessi.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.