dd (Unix)

comando dei sistemi operativi Unix e Unix-like
Versione del 27 apr 2015 alle 19:44 di S211897polito (discussione | contributi) (Aggiunta dei parametri per il wipe, precisazione che i blocchi in unix vengono trattati come file)

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.

Caratteristiche

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

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.

Parametri

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.

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

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

  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

Collegamenti esterni

  • (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.
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica