Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Linux Backup: dd

Come veicolare dati su Linux adoperando il comando dd.
Come veicolare dati su Linux adoperando il comando dd.
Link copiato negli appunti

Una delle necessità più comuni, per un amministratore di sistema, è quella di creare archivi e backup volti a recuperare o movimentare dati nei momenti in cui ciò può risultare opportuno.
Esistono innumerevoli possibilità per ottenere lo scopo ma noi presenteremo solo quelle che consentono il pieno controllo del processo interamente da linea di comando e risultano utilizzabili su qualsiasi sistema. Immediatamente a seguire daremo quindi uno sguardo a un comando fondamentale per l'amministratore di sistema: dd. Questi copia i dati a basso livello in locale.

Uso

La forza di dd risiede nel fatto di effettuare pochissime interpretazioni di ciò che gli chiediamo. Da una parte ha un flusso di dati in entrata e dall'altra un flusso di dati in uscita. Spesso, quando abbiamo la necessità di veicolare o gestire dati, sono proprio gli automatismi a inserire incongruenze. Quindi dd agisce in maniera estremante semplice. Nell'esempio, che vedrete fra pochi instanti, copiamo brutalmente un device su un altro device. Giusto per comprendere il senso del nostro esempio sappiate che il device sorgente è un dvd contenente una distribuzione live mentre il device destinazione è una partizione appena creata, priva di qualsiasi filesystem.

fprincipe@html52dd:/dev$ sudo dd bs=4M if=/dev/sr0 of=/dev/sdd status=progress oflag=sync
1962934272 bytes (2.0 GB, 1.8 GiB) copied, 15 s, 131 MB/s
476+1 records in
476+1 records out
2000156672 bytes (2.0 GB, 1.9 GiB) copied, 15.3758 s, 130 MB/s

Illustriamo brevemente le opzioni appena utilizzate, che sono molto comuni nell'utilizzo di dd, aggiungendone nella tabella a seguire anche alcune che riportiamo per completezza.

bs Descrive la quantità di dati (blocco), espressa in bytes o multipli, che deve essere copiata volta per volta, ovvero lo step con cui dd procede. Nell'esempio abbiamo chiesto di effettuare salti di 4Mb, il default sono 512 bytes.
if Normalmente dd legge dallo stdin, caratteristica che gli consente di essere inserito in una pipe, se questa opzione è specificata legge dal percorso (indifferentemente un file o un device).
of Stessa logica di if ma per lo output normalmente indirizzato verso stdout (quindi reindirizzabile, a esempio, verso un file o una pipe). Usando questa opzione possiamo puntare non solo verso un file ma anche verso un device.
status Descrive la quantità di informazioni da girare allo stderr. Il valore progress consente di ottenere informazioni sul trasferimento in corso.
obs Valore in bytes utilizzato di concerto con l'opzione seek per indicare l'estensione di un suo blocco.
seek Salta un numero di blocchi all'inizio dell'outpout.
ibs Valore in bytes utilizzato di concerto con l'opzione skip per indicare l'estensione di un suo blocco.
skip Salta il numero di blocchi specificato all'inizio dell'input.
count Veicola solo la quantità di blocchi indicata (pari al multiplo di bs corrispondente).

Abbiamo ottenuto una copia della sorgente sulla destinazione, quest’ultima, a sua volta, a riprova dell'efficacia di quanto abbiamo appena compiuto, può essere utilizzata per effettuare il boot poiché anche la sorgente poteva essere adoperata in questo modo.

Conclusioni

Sfruttando le caratteristiche appena presentate si potrà utilizzare dd per fare molte altre cose come, a esempio, copiare una partizione in un file. Ciò potrà rivelarsi utile in svariate situazioni. Concludiamo con un esempio pratico di quanto appena accennato precisando che il file di destinazione sarà compresso "al volo" giusto per dare la sensazione delle potenzialità celate dietro questo approccio.

fprincipe@html52dd2:~$ sudo dd status=progress if=/dev/sr0 | gzip -c > "sr0.img.gz"
264232448 bytes (264 MB, 252 MiB) copied, 13 s, 20.3 MB/s
523188+0 records in
523188+0 records out
267872256 bytes (268 MB, 255 MiB) copied, 13.2486 s, 20.2 MB/s
fprincipe@html52dd2:~$ ls
[...]
255M	sr0.img.gz

Ti consigliamo anche