dd (Unix)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

dd è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che copia dei dati in blocchi, opzionalmente effettuando conversioni.

Descrizione[modifica | modifica wikitesto]

Nei sistemi Unix tutti i driver hardware (come gli hard disk) sono trattati come file normali all'interno del file system. dd esegue le normali operazioni tra file (leggi, scrivi, copia) su questi file speciali e permette anche di convertire i dati nella fase di copiatura, inclusa la conversione dall'encoding ASCII a quello EBCDIC. Può anche essere usato per creare file sparsi.

Sintassi[modifica | modifica wikitesto]

La sintassi generale è:

dd [parametri …]

A differenza degli altri comandi dei sistemi Unix, i parametri sono tutti nella forma nome=valore (senza spazi né prima né dopo il segno "=") e possono essere specificati in qualunque ordine.

Opzioni[modifica | modifica wikitesto]

Tra i parametri principali vi sono:

if=nome_file
Legge i dati dal file nome_file invece che dallo standard input.
of=nome_file
Scrive i dati sul file nome_file invece che sullo standard output.
bs=dimensioni(bytes)
Legge e scrive dati in blocchi delle dimensioni specificate.
ibs=dimensioni
Legge i dati in blocchi delle dimensioni specificate (default: 512).
obs=dimensioni
Scrive i dati in blocchi delle dimensioni specificate (default: 512).
count=numero_blocchi
Copia solo il numero specificato di blocchi.
skip=numero_blocchi
Legge e scarta il numero di blocchi indicato prima di iniziare a copiare.
seek=numero_blocchi
Avanza del numero di blocchi indicato prima di iniziare a scrivere.
conv=conversione[,conversione …]
Effettua durante la copia le conversioni elencate (separate da virgole). Tra le principali conversioni vi sono:
ascii
Converte dalla codifica EBCDIC alla codifica ASCII.
ebcdic
Converte dalla codifica ASCII alla codifica EBCDIC.
ibm
Converte dalla codifica ASCII ad una variante della codifica EBCDIC.
lcase
Converte i caratteri in minuscolo.
ucase
Converte i caratteri in maiuscolo.
excl
Fallisce se il file di output esiste già; dd deve creare il file di output in sé.
nocreat
Non crea il file di output; il file di output deve esistere necessariamente.
notrunc
Non tronca il file di output.
fsync
Sincronizza i dati di output e i metadata poco prima del completamento. Questo forza fisicamente la scrittura dei dati di output e dei metadata.
sync
riempie ogni blocco di input con NUL fino alla dimensione di ibs; quando usato insieme a block o unblock riempie con spazi invece di NUL

Le dimensioni dei blocchi sono specificate in numero di byte (es. 42), oppure possono essere specificate con altre unità di misura specificando dei suffissi:

  • come numero di blocchi da 512 byte specificando il suffisso b (es. 33b);
  • come numero di KiB specificando il suffisso k (es. 1024k);

La versione GNU di dd ha supporto per ulteriori suffissi, conversioni e parametri[2] ed è possibile inviare il segnale SIGUSR1 ad un processo dd in esecuzione per fargli mostrare sullo standard error la quantità di dati fino a quel momento copiati senza interromperlo.

Esempi di utilizzo[modifica | modifica wikitesto]

Effettua una copia di una partizione del disco /dev/hda1 nel file backup_partizione_1 (nei sistemi GNU/Linux):

dd if=/dev/hda1 of=backup_partizione_1 bs=1024k

Prealloca un file chiamato dati da 20 MiB:

dd if=/dev/zero of=dati bs=1024k count=20

Effettua una copia dei dati che risiedono sul dispositivo /dev/sr0, che nei sistemi GNU/Linux corrisponde solitamente al primo lettore CD/DVD SCSI, pertanto recuperando di fatto da esso l'immagine .iso di un CD/DVD:

dd if=/dev/sr0  of=file.iso

Per effettuare la masterizzazione di un file immagine iso si inserisce nel campo 'if=' il nostro file immagine e nel campo 'of=' il nostro masterizzatore CD/DVD, 'bs=8M' definisce la grandezza del nostro blocco dati:

dd if=file.iso of=/dev/DRIVE bs=8M conv=fsync 

Effettua un wipe del disco sovrascrivendo tutti zero:

dd if=/dev/zero of=/dev/sda bs=4k

Un altro metodo per effettuare il wipe potrebbe essere la sovrascrittura con dati casuali:

dd if=/dev/urandom of=/dev/sda bs=4k

Note[modifica | modifica wikitesto]

  1. ^ (EN) dd, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17-05-2008.
  2. ^ (EN) dd: Convert and copy a file, in GNU Coreutils manual. URL consultato il 17-05-2008.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  • (EN) dd, in Linux Man Pages. URL consultato il 21-05-2008.
  • (EN) dd(1M), in Solaris 10 Reference Manual Collection - man pages. URL consultato il 21-05-2008 (archiviato dall'url originale il 6 giugno 2008).
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica