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.
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]- ^ (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
[modifica | modifica wikitesto]- cp (Unix) – Copia file e directory.
- Dispositivo a blocchi – Tipo di file spesso usato come sorgente o destinazione per dd.
- File sparso