GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare dd in Linux senza distruggere il tuo disco

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!


Linux
  1. Come usare BusyBox su Linux

  2. Come uso cron in Linux

  3. Come partizionare un disco in Linux

  4. Come usare TROVA in Linux

  5. Come usare fdisk per partizionare un disco in Linux

Come usare il comando Disown in Linux

Come utilizzare il comando SS di Linux

Come usare il comando nohup di Linux

Come utilizzare praticamente il tuo terminale Linux (parte 2)

Come usare TeamViewer su Ubuntu 20.04 Linux senza installazione

Come installare e utilizzare Docker nel tuo sistema Linux