Cosa fa#
Famiglia di tool per comprimere file (ridurre lo spazio) e archiviare file (raggruppare piu' file in uno). In Linux sono strumenti separati che si combinano: tar archivia, gzip o bzip2 comprimono. Il formato .tar.gz e' lo standard Linux.
La differenza fondamentale#
ARCHIVIAZIONE (tar) COMPRESSIONE (gzip/bzip2/zip)
─────────────────────────── ─────────────────────────────
raggruppa piu' file in uno riduce la dimensione del file
non riduce la dimensione non raggruppa piu' file
mantiene struttura directory lavora su file singoli
mantiene permessi e timestamp —tar da solo NON comprime. gzip da solo NON archivia directory. Li usi insieme.
Vedi compressione-vs-archiviazione per il concetto completo.
gzip — compressione veloce standard#
# Comprimi
gzip file.txt # crea file.txt.gz, RIMUOVE l'originale
gzip -k file.txt # -k = keep, mantiene l'originale
gzip -9 file.txt # -9 = compressione massima (piu' lento)
gzip -r cartella/ # -r = ricorsivo su tutti i file della cartella
# Decomprimi
gunzip file.txt.gz # decomprime e RIMUOVE il .gz
gzip -d file.txt.gz # equivalente a gunzip
gunzip -k file.txt.gz # mantiene il .gz
# Info
gzip -l file.gz # mostra rapporto di compressione
zcat file.gz # legge il contenuto senza decomprimere
# Velocita' vs compressione
gzip -1 file.txt # velocissimo, compressione minima
gzip -9 file.txt # lento, compressione massima
# default = -6 (buon equilibrio)bzip2 — compressione migliore, piu' lento#
# Comprimi
bzip2 file.txt # crea file.txt.bz2, rimuove l'originale
bzip2 -k file.txt # mantiene l'originale
# Decomprimi
bunzip2 file.txt.bz2
bzip2 -d file.txt.bz2 # equivalente
# Leggi senza decomprimere
bzcat file.bz2zip — formato Windows-compatibile#
# Comprimi
zip archivio.zip file1 file2 file3 # crea archivio con i file specificati
zip -r archivio.zip cartella/ # -r = ricorsivo
zip -e archivio.zip file.txt # -e = encrypt con password
# Decomprimi
unzip archivio.zip
unzip archivio.zip -d /destinazione/ # estrai in una directory specifica
# Info
unzip -l archivio.zip # lista contenuto senza estrarretar — archiviazione (spesso combinata con compressione)#
# CREARE
tar -cvf archivio.tar cartella/ # crea archivio senza compressione
tar -czvf archivio.tar.gz cartella/ # crea + comprimi con gzip
tar -cjvf archivio.tar.bz2 cartella/ # crea + comprimi con bzip2
# ESTRARRE
tar -xvf archivio.tar # estrai
tar -xzvf archivio.tar.gz # estrai + decomprimi gzip
tar -xjvf archivio.tar.bz2 # estrai + decomprimi bzip2
tar -xvf archivio.tar -C /destinazione/ # estrai in directory specifica
# ISPEZIONARE (senza estrarre)
tar -tvf archivio.tar # lista contenuto
tar -tvf archivio.tar.gz # lista contenuto compresso
# I FLAG
# c = create x = extract t = list
# v = verbose f = file (nome archivio)
# z = gzip j = bzip2Mnemonico: cvf = "Crea Verbosamente su File" | xvf = "eXtrai Verbosamente da File"
Confronto algoritmi#
| Strumento | Estensione | Velocita' | Compressione | Uso tipico |
|---|---|---|---|---|
gzip | .gz | veloce | media | standard Linux, log |
bzip2 | .bz2 | lento | alta | distribuzioni software |
zip | .zip | media | media | interoperabilita' Windows |
tar | .tar | — | nessuna | archiviazione pura |
tar.gz | .tar.gz o .tgz | veloce | media | standard de facto Linux |
tar.bz2 | .tar.bz2 | lento | alta | distribuzioni, kernel |
Combinazioni utili — Blue Team#
# Backup rapido di /etc prima di modifiche
sudo tar -czvf /backup/etc-$(date +%Y%m%d).tar.gz /etc/
# Backup log con data
tar -czvf logs-$(date +%Y%m%d-%H%M).tar.gz /var/log/
# Crea archivio e calcola hash per catena di custodia forense
tar -czvf evidence.tar.gz /percorso/sospetto/
sha256sum evidence.tar.gz > evidence.tar.gz.sha256
# Ispeziona un archivio sospetto PRIMA di estrarre
tar -tvf archivio-sospetto.tar.gz # lista contenuto
unzip -l archivio-sospetto.zip # per zip
# Estrai solo un file specifico dall'archivio
tar -xvf archivio.tar.gz percorso/del/file.txt
# Zip bomb — segnale d'allarme
# Un .zip da 1KB che contiene 1GB di dati e' una zip bomb
# unzip -l prima di estrarre mostra la dimensione decompressaIdentificare il tipo di compressione senza estensione#
# Il comando file legge i magic bytes
file archivio_sconosciuto
# archivio_sconosciuto: gzip compressed data
# Se e' un hexdump (come in Bandit 12)
xxd -r hexdump.txt > binario
file binario # rivela il tipo realeVedi magic-bytes per la teoria e nested-compression per gli archivi a strati.
Scenario Reale#
Un analista riceve un file allegato sospetto da un'email. Prima di aprirlo:
# 1. Identifica il tipo reale indipendentemente dall'estensione
file allegato.docx
# allegato.docx: Zip archive data ← i .docx sono zip in disguise
# 2. Lista il contenuto senza estrarre
unzip -l allegato.docx
# 3. Cerca macro VBA o eseguibili dentro l'archivio
unzip -l allegato.docx | grep -E "\.exe|\.vba|\.bin|macros"
# 4. Se estrai, fallo in una directory isolata
mkdir /tmp/analisi && unzip allegato.docx -d /tmp/analisi/Dove l'ho usato#
- bandit-12 — analisi archivio matrioska con strati multipli di compressione
Collegato a#
- system — categoria
- incidents — categoria
- compressione-vs-archiviazione — concetto teorico
- nested-compression — archivi a strati multipli (evasione AV)
- magic-bytes — identificare il tipo reale di un archivio
- rsync — sincronizzazione file, alternativa al backup manuale con tar
- sha256sum — verifica integrita' degli archivi


