Skip to main content
  1. Comandi/

Compressione e Archivi - gzip, bzip2, zip, tar

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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.bz2

zip — 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 estrarre

tar — 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 = bzip2

Mnemonico: cvf = "Crea Verbosamente su File" | xvf = "eXtrai Verbosamente da File"


Confronto algoritmi
#

StrumentoEstensioneVelocita'CompressioneUso tipico
gzip.gzvelocemediastandard Linux, log
bzip2.bz2lentoaltadistribuzioni software
zip.zipmediamediainteroperabilita' Windows
tar.tarnessunaarchiviazione pura
tar.gz.tar.gz o .tgzvelocemediastandard de facto Linux
tar.bz2.tar.bz2lentoaltadistribuzioni, 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 decompressa

Identificare 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 reale

Vedi 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
#

Related