Dd (Unix): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(13 versioni intermedie di 12 utenti non mostrate)
Riga 1:
{{Titolo minuscolo}}
'''dd''' è un comando dei [[Sistema operativo|sistemi operativi]] [[Unix]] e [[Unix-like]], e più in generale dei sistemi [[POSIX]]<ref>{{cita web
|url=httphttps://www.opengroup.org/onlinepubs/000095399/utilities/dd.html
|titolo=dd
|accesso=17-05-2008
Riga 8:
}}</ref>, che copia dei dati in blocchi, opzionalmente effettuando conversioni.
 
== CaratteristicheDescrizione ==
PurNei potendosistemi essere[[Unix]] usatotutti anchei perdriver copiarehardware o(come convertiregli hard disk) sono trattati come file normali all'interno deidel [[file system]]. dd esegue le normali operazioni tra file regolari(leggi, ''dd''scrivi, ècopia) tipicamentesu usatoquesti confile speciali e permette anche di convertire i dati nella fase di copiatura, inclusa la conversione dall'encoding [[DispositivoASCII]] a blocchi|dispositiviquello a blocchi[[EBCDIC]]. Può anche essere usato per creare [[File sparso|file sparsi]].
 
=== Sintassi ===
La sintassi generale è:
 
dd [''parametri'' …]
 
A differenza degli altri comandi dei sistemi ''Unix'', i parametri sono tutti nella forma <ttkbd>''nome''=''valore''</ttkbd> (senza spazi né prima né dopo il segno "<ttkbd>=</ttkbd>") e possono essere specificati in qualunque ordine.
 
=== ParametriOpzioni ===
Tra i parametri principali vi sono:
 
;<ttkbd>if=''nome_file''</ttkbd>: Legge i dati dal file ''nome_file'' invece che dallo ''[[standard input]]''.
;<ttkbd>of=''nome_file''</ttkbd>: Scrive i dati sul file ''nome_file'' invece che sullo ''[[standard output]]''.
;<ttkbd>bs=''dimensioni(''</ttkbd>(bytes): Legge e scrive dati in blocchi delle ''dimensioni'' specificate.
;<ttkbd>ibs=''dimensioni''</ttkbd>: Legge i dati in blocchi delle ''dimensioni'' specificate (default: 512).
;<ttkbd>obs=''dimensioni''</ttkbd>: Scrive i dati in blocchi delle ''dimensioni'' specificate (default: 512).
;<ttkbd>count=''numero_blocchi''</ttkbd>: Copia solo il numero specificato di blocchi.
;<ttkbd>skip=''numero_blocchi''</ttkbd>: Legge e scarta il numero di blocchi indicato prima di iniziare a copiare.
;<ttkbd>seek=''numero_blocchi''</ttkbd>: Avanza del numero di blocchi indicato prima di iniziare a scrivere.
;<ttkbd>conv=''conversione''[,''conversione'' …]</ttkbd>: Effettua durante la copia le ''conversioni'' elencate (separate da virgole). Tra le principali conversioni vi sono:
:;<ttkbd>ascii</ttkbd>: Converte dalla codifica [[EBCDIC]] alla codifica [[ASCII]].
:;<ttkbd>ebcdic</ttkbd>: Converte dalla codifica [[ASCII]] alla codifica [[EBCDIC]].
:;<ttkbd>ibm</ttkbd>: Converte dalla codifica [[ASCII]] ad una variante della codifica [[EBCDIC]].
:;<ttkbd>lcase</ttkbd>: Converte i caratteri in minuscolo.
:;<ttkbd>ucase</ttkbd>: Converte i caratteri in maiuscolo.
:;<ttkbd>excl</ttkbd>: Fallisce se il file di output esiste già; dd deve creare il file di output in sé.
:;<ttkbd>nocreat</ttkbd>: Non crea il file di output; il file di output deve esistere necessariamente.
:;<ttkbd>notrunc</ttkbd>: Non tronca il file di output.
:;<ttkbd>fsync</ttkbd>: Sincronizza i dati di output e i metadata poco prima del completamento. Questo forza fisicamente la scrittura dei dati di output e dei [[metadata]].
:;<kbd>sync</kbd>: 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. <ttkbd>42</ttkbd>), oppure possono essere specificate con altre [[unità di misura]] specificando dei suffissi:
* come numero di blocchi da 512 ''byte'' specificando il suffisso ''b'' (es. <ttkbd>33b</ttkbd>);
* come numero di [[KiB]] specificando il suffisso ''k'' (es. <ttkbd>1024k</ttkbd>);
 
La versione [[GNU]] di ''dd'' ha supporto per ulteriori suffissi, conversioni e parametri<ref>* {{cita web
Le ''dimensioni'' dei blocchi sono specificate in numero di [[byte]] (es. <tt>42</tt>), oppure possono essere specificate con altre unità di misura specificando dei suffissi:
|url =http https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html|titolo = dd: Convert and copy a file|accesso = 17-05-2008|opera = GNU Coreutils manual|lingua = en}}
* come numero di blocchi da 512 ''byte'' specificando il suffisso ''b'' (es. <tt>33b</tt>);
}}</ref> ed è possibile inviare il [[Segnale (informatica)|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.
* come numero di [[KiB]] specificando il suffisso ''k'' (es. <tt>1024k</tt>);
 
La versione [[GNU]] di ''dd'' ha supporto per ulteriori suffissi, conversioni e parametri<ref>* {{cita web
|url=http://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html
|titolo=dd: Convert and copy a file
|accesso=17-05-2008
|opera=GNU Coreutils manual
|lingua=en
}}</ref> ed è possibile inviare il [[Segnale (informatica)|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 <ttkbd>/dev/hda1</ttkbd> nel file <ttkbd>backup_partizione_1</ttkbd> (nei sistemi [[GNU/Linux]]):
dd if=/dev/hda1 of=backup_partizione_1 bs=1024k
 
Prealloca un file chiamato <ttkbd>dati</ttkbd> da 20 [[MiB]]:
dd if=/dev/zero of=dati bs=1024k count=20
 
Effettua una copia dei dati che risiedono sul dispositivo <ttkbd>/dev/sr0</ttkbd>, 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|immagine iso]] si inserisce nel campo ''''<nowiki>if='</nowiki>''' il nostro file immagine e nel campo ''''<nowiki>of='</nowiki>'' '''''il nostro [[masterizzatore]] CD/DVD, '<nowiki/>'''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 ==
Line 80 ⟶ 85:
}}
* {{cita web
|url = http://docs.sun.com/app/docs/doc/816-5166/dd-1m?a=view
|titolo = dd(1M)
|accesso = 21-05-2008
|opera = Solaris 10 Reference Manual Collection - man pages
|lingua = en
|urlmorto = sì
|urlarchivio = https://web.archive.org/web/20080606000416/http://docs.sun.com/app/docs/doc/816-5166/dd-1m?a=view
|dataarchivio = 6 giugno 2008
}}