Cos'è dd?

dd: Utilità di Conversione e Copia Dati

dd è un potente strumento a riga di comando disponibile sui sistemi operativi Unix e Linux. Il suo scopo principale è copiare e convertire dati da un file o dispositivo all'altro. La sua flessibilità lo rende utile per diverse attività, tra cui:

  • Backup e ripristino di partizioni e dischi: Può creare immagini complete di dischi o partizioni, consentendo il ripristino in caso di guasti.
  • Clonazione di dischi: Copia l'intero contenuto di un disco su un altro.
  • Scrittura di immagini ISO su dispositivi USB: Crea chiavette USB avviabili da immagini ISO.
  • Conversione del formato dei dati: Modifica il formato dei dati durante la copia, ad esempio convertendo tra ASCII ed EBCDIC.
  • Generazione di file di test: Crea file di dimensioni specifiche riempiti con dati casuali o pattern ripetuti.
  • Pulizia sicura dei dischi: Sovrascrive i dati sui dischi per renderli irrecuperabili.

Sintassi di base:

dd if=<file_di_input> of=<file_di_output> [opzioni]
  • if=<file_di_input>: Specifica il file di input da cui leggere i dati. Se omesso, viene utilizzato lo standard input.
  • of=<file_di_output>: Specifica il file di output in cui scrivere i dati. Se omesso, viene utilizzato lo standard output.
  • [opzioni]: Permettono di controllare il processo di copia e conversione.

Opzioni Importanti:

  • bs=<dimensione_blocco>: Specifica la dimensione del blocco in byte per la lettura e la scrittura. Un blocco più grande può migliorare le prestazioni, ma può anche causare problemi di compatibilità con alcuni dispositivi. Esempio: bs=4M (4 megabyte).
  • count=<numero_blocchi>: Specifica il numero di blocchi da copiare.
  • skip=<numero_blocchi>: Salta il numero di blocchi dall'inizio del file di input.
  • seek=<numero_blocchi>: Salta il numero di blocchi dall'inizio del file di output.
  • conv=<conversione>: Specifica una o più conversioni da applicare ai dati. Alcune conversioni comuni includono:
    • ascii: Converte EBCDIC in ASCII.
    • ebcdic: Converte ASCII in EBCDIC.
    • lcase: Converte maiuscole in minuscole.
    • ucase: Converte minuscole in maiuscole.
    • noerror: Continua l'elaborazione anche in caso di errori di lettura.
    • sync: Riempie ogni blocco di input con zeri ('\0') fino alla dimensione bs.
    • fsync: Scarica fisicamente tutti i dati di output su disco prima di terminare.
  • status=<level>: Controlla la quantità di informazioni visualizzate durante l'esecuzione. status=progress mostra la barra di avanzamento e le statistiche in tempo reale. Altri valori sono none (nessuna informazione) e noxfer (mostra solo le statistiche al termine).

Esempi:

  • Clonare un disco:
    dd if=/dev/sda of=/dev/sdb bs=4M status=progress
    
    Questo comando copia l'intero contenuto del disco /dev/sda sul disco /dev/sdb. Attenzione: Assicurarsi che /dev/sdb sia sufficientemente grande da contenere tutti i dati. Un errore in questo comando potrebbe sovrascrivere inavvertitamente dati importanti.
  • Creare un'immagine ISO da un CD-ROM:
    dd if=/dev/cdrom of=immagine.iso bs=2048 status=progress
    
  • Scrivere un'immagine ISO su una chiavetta USB:
    dd if=immagine.iso of=/dev/sdX bs=4M status=progress
    
    Attenzione: Sostituire /dev/sdX con il dispositivo corretto per la chiavetta USB. Utilizzare lsblk per identificare correttamente il dispositivo. Un errore in questo comando potrebbe sovrascrivere inavvertitamente dati importanti.
  • Creare un file di 1 GB riempito con zeri:
    dd if=/dev/zero of=file_1gb.img bs=1M count=1024
    

Importante:

dd è uno strumento potente, ma anche pericoloso se usato in modo improprio. Un errore nell'input (come specificare il dispositivo di output sbagliato) può comportare la perdita permanente di dati. Si consiglia di fare molta attenzione e verificare attentamente i comandi prima di eseguirli. Usare sempre lsblk per identificare correttamente i dispositivi. Considerare anche l'utilizzo di strumenti alternativi come Clonezilla o rsync per alcune attività, in quanto potrebbero offrire una maggiore protezione contro errori.