dd (Unix)
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
- ^ (EN) dd, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 17-05-2008.
- ^ (EN) dd: Convert and copy a file, in GNU Coreutils manual. URL consultato il 17-05-2008.
Voci correlate
- cp (Unix) – Copia file e directory.
- Dispositivo a blocchi – Tipo di file spesso usato come sorgente o destinazione per dd.
- File sparso