Questo articolo è tratto dal capitolo 4 di Linux in Action, pubblicato da Manning.
Sia che tu stia cercando di salvare i dati da un'unità di archiviazione in via di esaurimento, di eseguire il backup di archivi su una memoria remota o di eseguire una copia perfetta di una partizione attiva da qualche altra parte, dovrai sapere come copiare in modo sicuro e affidabile unità e filesystem. Fortunatamente, dd
è uno strumento di copia delle immagini semplice e potente che è in circolazione, beh, praticamente da sempre. E in tutto questo tempo, non è successo niente che faccia meglio il lavoro.
Copie perfette di unità e partizioni
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Ci sono tutti i tipi di cose che puoi fare con dd
se cerchi abbastanza, ma dove brilla è nei modi in cui ti consente di giocare con le partizioni. Ovviamente puoi usare tar
o anche scp
per replicare interi filesystem copiando i file da un computer e quindi incollandoli così come sono su una nuova installazione di Linux su un altro computer. Tuttavia, poiché quegli archivi del filesystem non sono immagini complete, richiedono un sistema operativo host in esecuzione su entrambe le estremità per fungere da base.
Usando dd
, d'altra parte, può creare immagini byte per byte perfette di, beh, praticamente qualsiasi cosa digitale. Ma prima di iniziare a lanciare partizioni da un capo all'altro della terra, dovrei menzionare che c'è del vero in quella vecchia battuta dell'amministratore Unix:"dd sta per distruttore di dischi ." Se digiti anche un solo carattere sbagliato in un dd
comando, puoi cancellare istantaneamente e permanentemente un'intera unità di dati preziosi. E sì, l'ortografia conta.
Ricorda: Prima di premere il tasto Invio per invoca dd
, fermati e pensa con molta attenzione!
Operazioni dd di base
Ora che sei stato adeguatamente avvisato, inizieremo con qualcosa di semplice. Supponiamo di voler creare un'immagine esatta di un intero disco di dati che è stato designato come /dev/
sda
. Hai collegato un'unità vuota (idealmente avente la stessa capacità del tuo /dev/
sda
sistema). La sintassi è semplice:if=
definisce l'unità di origine e of=
definisce il file o la posizione in cui desideri che i tuoi dati vengano salvati:
# dd if=/dev/sda of=/dev/sdb
Il prossimo esempio creerà un archivio .img del /dev/
sda
guidare e salvarlo nella home directory del tuo account utente:
# dd if=/dev/sda of=/home/username/sdadisk.img
Quei comandi hanno creato immagini di intere unità. Potresti anche concentrarti su una singola partizione da un'unità. Il prossimo esempio lo fa e usa anche bs
per impostare il numero di byte da copiare contemporaneamente (4.096, in questo caso). Giocare con i bs
value può avere un impatto sulla velocità complessiva di un dd
operazione, anche se l'impostazione ideale dipenderà dal tuo profilo hardware e da altre considerazioni.
# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096
Il ripristino è semplice:in effetti, inverti i valori di if
e of
. In questo caso, if=
prende l'immagine che desideri ripristinare e of=
prende l'unità di destinazione su cui vuoi scrivere l'immagine:
# dd if=sdadisk.img of=/dev/sdb
Puoi anche eseguire sia le operazioni di creazione che di copia in un unico comando. Questo esempio, ad esempio, creerà un'immagine compressa di un'unità remota utilizzando SSH e salverà l'archivio risultante sul tuo computer locale:
# ssh [email protected] "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
Dovresti sempre testare i tuoi archivi per confermare che funzionino. Se è un'unità di avvio che hai creato, inseriscila in un computer e verifica se si avvia come previsto. Se è una normale partizione di dati, montala per assicurarti che i file esistano e siano adeguatamente accessibili.
Cancellazione dei dischi con dd
Anni fa, avevo un amico che era responsabile della sicurezza presso le ambasciate all'estero del suo governo. Una volta mi ha detto che ogni ambasciata sotto la sua sorveglianza era dotata di un martello ufficiale emesso dal governo. Come mai? Nel caso in cui la struttura avesse mai rischiato di essere invasa da nemici, il martello doveva essere usato per distruggere tutti i loro dischi rigidi.
Che cos'è? Perché non cancellare semplicemente i dati? Stai scherzando, vero? Tutti sanno che l'eliminazione di file contenenti dati sensibili dai dispositivi di archiviazione non rimuove effettivamente i dati. Con abbastanza tempo e motivazione, quasi tutto può essere recuperato praticamente da qualsiasi supporto digitale, con la possibile eccezione di quelli che sono stati ben e adeguatamente martellati.
Puoi, tuttavia, utilizzare dd
per rendere molto più difficile per i cattivi ottenere i tuoi vecchi dati. Questo comando impiegherà un po' di tempo a scrivere milioni e milioni di zeri su ogni angolo del /dev/sda1
partizione:
# dd if=/dev/zero of=/dev/sda1
Ma migliora. Usando /dev/
urandom
come sorgente, puoi scrivere su un disco con caratteri casuali:
# dd if=/dev/urandom of=/dev/sda1
Monitoraggio delle operazioni dd
Poiché l'archiviazione del disco o della partizione può richiedere molto tempo, potresti voler aggiungere un monitor di avanzamento al tuo comando. Installa Pipe Viewer (sudo apt install pv
su Ubuntu) e inserirlo in dd
. Con pv
, quell'ultimo comando potrebbe assomigliare a questo:
# dd if=/dev/urandom | pv | dd of=/dev/sda1
4,14MB 0:00:05 [ 98kB/s] [ <=> ]
Rinviare i backup e la gestione del disco? Con dd, non ti rimangono troppe scuse. Non è davvero difficile, ma fai attenzione. Buona fortuna!