Guida semi-esaustiva al comando dd su Linux
Introduzione
Il comando dd
è uno strumento potentissimo e versatile presente in quasi tutte le distribuzioni Linux. Nato per scopi di conversione e copia di file, dd
si è evoluto in un’utility indispensabile, soprattutto quando si tratta di operazioni su blocchi di dati. Tra i suoi utilizzi più comuni troviamo la creazione di immagini di dischi, la clonazione di dispositivi di archiviazione, la cancellazione sicura dei dati e molto altro ancora. In questa guida vedremo come padroneggiare il comando dd
con una panoramica completa, partendo dalle operazioni più semplici fino a quelle più avanzate.
Presenza nelle varie distribuzioni
dd
è preinstallato nella maggior parte delle distribuzioni Linux, inclusi i più diffusi sistemi come Debian, Ubuntu, Fedora, Arch Linux e CentOS. Essendo un comando Unix di base, lo si trova in qualunque distribuzione che aderisca agli standard POSIX.
Compendio tramite esempi
1. Copia di file e dispositivi (uso base)
Uno degli utilizzi fondamentali di dd
è la copia di file e dispositivi di archiviazione. La sintassi base del comando è:
dd if=origine of=destinazione
if
(input file) specifica la sorgente da copiare.of
(output file) indica la destinazione dove copiare i dati.
Esempio:
Copiare un’immagine ISO su una chiavetta USB:
sudo dd if=immagine.iso of=/dev/sdX bs=4M status=progress
bs=4M
definisce la dimensione del blocco in byte (qui 4 megabyte).status=progress
permette di visualizzare il progresso dell’operazione.
2. Creare un’immagine di backup di un disco
Un altro uso comune di dd
è la creazione di immagini di backup di dischi o partizioni. Questo è utile quando si vuole fare una copia di sicurezza o clonare un intero disco rigido.
sudo dd if=/dev/sdX of=/path/to/backup.img bs=1M
Questo comando creerà un file immagine (backup.img
) dell’intero disco sdX
.
3. Ripristinare un’immagine su un disco
Se vuoi ripristinare un’immagine precedentemente creata su un disco, puoi semplicemente invertire if
e of
:
sudo dd if=/path/to/backup.img of=/dev/sdX bs=1M
4. Cancellazione sicura di un disco
Per sovrascrivere un intero disco con dati casuali e cancellarlo in modo sicuro:
sudo dd if=/dev/urandom of=/dev/sdX bs=1M status=progress
In questo modo, il disco verrà riempito con dati casuali, rendendo molto difficile (se non impossibile) recuperare i dati originali.
5. Clonare un disco
Puoi clonare un intero disco su un altro usando dd
:
sudo dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
conv=noerror,sync
dice add
di continuare anche in caso di errori di lettura (noerror
) e di riempire i blocchi incompleti con zeri (sync
).
6. Verifica della copia
Per assicurarsi che la copia sia andata a buon fine, è possibile confrontare i checksum del file originale e della destinazione:
sha256sum /dev/sdX
sha256sum /dev/sdY
Questo comando genererà un hash SHA256 per ciascun dispositivo, che potrà essere confrontato per verificare che non ci siano differenze.
7. Limitare la velocità di trasferimento
Per evitare di sovraccaricare il sistema durante la copia di grandi quantità di dati, puoi limitare la velocità di trasferimento con il comando pv
(pipe viewer):
pv -tpreb /dev/sdX | dd of=/dev/sdY bs=64K
pv
permette di monitorare il progresso del trasferimento e di limitare la velocità.
8. Creare un file di dimensioni specifiche
Per creare un file vuoto (o riempito di zeri) di una dimensione specifica:
dd if=/dev/zero of=file.bin bs=1M count=100
Questo comando creerà un file di 100MB (bs=1M
specifica blocchi da 1 megabyte, e count=100
crea 100 blocchi).
9. Copiare parte di un file o dispositivo
Puoi copiare solo una parte di un file o di un dispositivo utilizzando skip
e count
:
dd if=/dev/sdX of=part.img bs=512 skip=2048 count=4096
Questo copia solo 4096 blocchi da 512 byte, saltando i primi 2048 blocchi.
Clonare dispositivi di dimensioni diverse
Uno degli aspetti cruciali quando si utilizza dd
per clonare dischi è la gestione delle dimensioni diverse tra il dispositivo sorgente e quello di destinazione. Mentre dd
può clonare un disco più piccolo su uno più grande senza problemi, la clonazione di un disco più grande su uno più piccolo è più complessa e richiede attenzione.
1. Clonazione da un disco più piccolo a uno più grande
Se cloni da un dispositivo più piccolo a uno più grande, dd
copierà tutti i dati correttamente, ma lo spazio aggiuntivo sul dispositivo di destinazione rimarrà non allocato. In questi casi, sarà necessario ridimensionare manualmente le partizioni e il filesystem per utilizzare l’intero spazio disponibile.
Esempio di clonazione:
sudo dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync
Dopo questa operazione, potrai usare strumenti come gparted
o fdisk
per ridimensionare le partizioni e sfruttare lo spazio non allocato. Se stai utilizzando un filesystem come ext4, puoi usare il comando resize2fs
per estendere la partizione:
sudo resize2fs /dev/sdY1
2. Clonazione da un disco più grande a uno più piccolo
Se provi a clonare un disco più grande su uno più piccolo, dd
fallirà se il disco sorgente contiene più dati di quanti ne possano essere contenuti sul disco di destinazione. In questi casi, è necessario ridurre il filesystem e le partizioni sul disco sorgente per adattarli al dispositivo più piccolo.
Procedura:
- Riduci le partizioni e il filesystem sul disco sorgente utilizzando
gparted
oresize2fs
per adattare lo spazio utilizzato. - Esegui
dd
per clonare il disco ridimensionato sul dispositivo più piccolo:
sudo dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync
Nota: Se il disco sorgente contiene più dati di quelli che il disco di destinazione può contenere, dd
non riuscirà a completare l’operazione. In alternativa, puoi optare per una soluzione diversa.
Alternative a dd
per clonare dischi di dimensioni diverse
Quando si tratta di clonare dischi di dimensioni diverse (soprattutto se il dispositivo sorgente è più grande di quello di destinazione), strumenti come dd
possono risultare limitati o poco efficienti. In questi casi, è consigliabile utilizzare soluzioni specializzate come:
- Clonezilla: Un’utility avanzata che permette di clonare dischi o partizioni e gestisce automaticamente la riduzione delle partizioni e il ridimensionamento dei filesystem. Supporta anche la clonazione tra dischi di dimensioni diverse.
- GParted Live: Una distribuzione Linux live che include strumenti di gestione avanzata delle partizioni, permettendo di ridimensionare, copiare e spostare partizioni in modo semplice.
- Partclone: Un altro strumento utile per clonare partizioni che può essere utilizzato insieme a Clonezilla per gestire meglio situazioni in cui il disco di destinazione è più piccolo di quello sorgente.
Utilizzare queste alternative rende la clonazione tra dischi di dimensioni diverse molto più sicura ed efficiente, riducendo al minimo i rischi di perdita di dati o errori di gestione dello spazio.
Linkografia essenziale
- Manuale ufficiale di
dd
– Documentazione dettagliata sul comandodd
. - Arch Wiki – Uso avanzato di
dd
– Approfondimenti e esempi avanzati. - GNU Core Utilities – Manuale delle GNU core utilities, inclusa la descrizione completa di
dd
. - The Linux Command Line – Guida per principianti all’uso dei comandi in Linux.
Seguendo questa guida, sarai in grado di utilizzare il comando dd
per una vasta gamma di operazioni, dalla creazione di backup, alla clonazione di dischi, alla cancellazione sicura dei dati, fino alla copia di file e partizioni.