Backup e ripristino dell'immagine con dd

Che cos'è dd?

Il comando dd è un'utilità per la copia e la conversione dei file, comunemente utilizzata nella maggior parte dei sistemi operativi Unix. Può essere utilizzato per operazioni quali la creazione di backup di dati, la clonazione di dischi, la creazione di immagini di partizioni e altro ancora. Tuttavia, è necessario prestare attenzione quando si utilizza dd, poiché un uso improprio può portare alla perdita di dati.

Ecco la sintassi di base del comando dd:

dd if=input_file of=output_file [opzioni]

Dove:
- if (file di input) specifica il file di input o l'origine dei dati.
- of (file di output) specifica il file di output o la destinazione dei dati.

Di seguito sono riportate alcune opzioni e parametri comuni di dd:

1. bs (dimensione del blocco): Determina la dimensione del blocco di dati. Ad esempio, bs=4K imposta la dimensione del blocco a 4 kilobyte.
2. count: Specifica il numero di blocchi da copiare. Ad esempio, count=100 copia 100 blocchi di dati.
3. iflag e oflag: Opzioni per il controllo dei flag di ingresso e di uscita. Ad esempio, iflag=direct può essere usato per leggere i dati direttamente, aggirando la cache del sistema operativo.
4. seek e skip: Opzioni per spostare il puntatore del file di input o di output per iniziare o terminare la copia da una posizione specifica.
5. status: Opzione per visualizzare informazioni sull'avanzamento dell'operazione di copia.
6. conv (conversione): Consente varie conversioni di dati, come il cambio di maiuscole e minuscole (conv=ucase o conv=lcase), l'eliminazione di caratteri (conv=sync) e altro.
7. iflag e oflag: Queste opzioni consentono di configurare i flag per i dati in ingresso (iflag) e in uscita (oflag). Ad esempio, direct può essere usato per leggere o scrivere dati direttamente senza buffering.
8. status: Questa opzione consente di visualizzare informazioni sull'avanzamento dell'operazione di copia.
9. seek e skip: Permettono di spostare il puntatore del file di input o di output per iniziare la copia da una posizione specifica.

Vediamo alcuni esempi di utilizzo di dd per copiare file e directory sul Cloud Storage remoto fornito da Introserv utilizzando il protocollo SSH e il comando rsync. Inoltre, l'esempio dimostrerà il backup e il ripristino di un'immagine di sistema utilizzando un terzo disco. Nota importante: comandi simili, con l'indicazione di un server di destinazione, consentono di copiare directory e file su qualsiasi server remoto tramite SSH. Inoltre, per garantire l'integrità dei dati, utilizzeremo un'immagine di "recupero" chiamata Finnix.

Creazione di un backup dell'immagine del sistema

1.Creazione di un backup:

Preparativi:
1. Scaricare Finnix sul computer da https://www.finnix.org.
2. Collegare l'immagine ISO tramite IP-KVM.
3. Avviare il server dall'immagine Finnix. Avviare il server dall'immagine ISO Finnix.

2. Lavorare con Finnix

Esploreremo due metodi, uno dei quali è possibile utilizzando il Cloud Storage di Introserv.

Per montare un file storage remoto (cloud storage) tramite SSH, si consiglia di utilizzare uno strumento come SSHFS (SSH File System), che consente di collegare directory remote al computer locale utilizzando il protocollo SSH. Ecco come fare:

2.1. Installare SSHFS.

Poiché è già installato in Finnix, non eseguiremo questo passaggio.

sudo apt-get install sshfs

2.2. Creare una directory locale in cui montare la cartella remota.

Ad esempio:

sudo mkdir -p /root/mnt/backup

Questo comando crea la struttura di directory necessaria, comprese le directory parentali mancanti (flag -p).

2.3. Montare la directory remota tramite SSHFS:

sudo sshfs box17469@box17469.introserv.cloud:/backups ~/mnt/backup/

- box*****: Il nome utente SSH sul server remoto.
- Box*****.introserv.cloud: L'indirizzo IP o il nome host del server remoto.
- /backups: Il percorso della directory su cloudstorage.
- ~/remote_mount: Il percorso della cartella locale creata in precedenza, dove vogliamo montare la nostra cartella remota dal cloudstorage.

Il sistema chiederà la password, che si trova nei dettagli dell'ordine nella sezione Backup.

2.4. Controllare la nostra cartella di rete.

2.5. Per creare un backup del sistema, utilizzare il seguente comando:

dd if=/dev/sda of=/root/mnt/backup/sda.ing bs=8M conv=sync,noerror

2 è possibile utilizzare un terzo disco o un'altra memoria esterna.

2.1 Determinare il disco rigido dove è installato il sistema principale (in questo caso, Ubuntu)

In questo caso, è sda.

2.2 Montare anche la cartella dell'unità esterna in modo da potervi collocare l'immagine di backup.

Per montare il file system creato nella directory /mnt/, eseguire i seguenti comandi:

sudo mount /dev/sdX /mnt/папка # sostituire sdX con il dispositivo o la partizione specifica (in questo caso, abbiamo sdb)

Per creare un backup del disco rigido, utilizzare il seguente comando:

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

- if=/dev/sda - copia l'intero disco rigido sda;
- of=/mnt/backup/sda.img - copia in /mnt/backup/sda.img, dove la directory /mnt/backup è il punto di montaggio del disco che conterrà l'immagine;
- bs=8M - imposta la dimensione della cache del disco rigido per accelerare il processo di copia (altrimenti i dati verranno scaricati in piccoli lotti di 512 byte);
- conv=sync,noerror - indica a dd di copiare bit per bit ignorando gli errori.

Ripristino di un backup di sistema su un altro server o disco

1. Collegamento dell'immagine di ripristino

  • Collegare l'immagine ISO tramite IP-KVM.
  • Riavviare il server nell'immagine ISO Finnix.

2. Lavorare con Finnix

Come per il backup, abbiamo due modi per utilizzare CloudStorage:

2.1. Creare una directory locale in cui montare la cartella remota. Ad esempio:

sudo mkdir -p /root/mnt/backup

2.2. Montare la cartella remota tramite SSHFS:

sudo sshfs box17469@box17469.introserv.cloud:/backups ~/mnt/backup

Il sistema richiederà una password, che si trova nei dettagli dell'ordine nella sezione Backup.

Controllate anche che la cartella sia montata.

ls -l /root/mnt/backup/

2.3. Trovare l'immagine firmata sda.img sull'unità di rete collegata.

Per ripristinare il sistema da un backup, utilizzare il seguente comando:

dd if=/root/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

2.4. Dopodiché, riavviare il BIOS.

Impostare il disco in cui è stato distribuito il sistema come priorità di avvio, riavviare e provare ad avviare il sistema.

Consideriamo anche la possibilità di distribuire un'immagine di sistema utilizzando un terzo disco o un altro sistema di memorizzazione:

2.1. Перезеграужаемся в Finniх.

Montare il disco o lo storage di rete con l'immagine usando il comando sudo mount /dev/external_network_disk_or_storage /mnt/folder_for_mounting.

Trovare l'immagine firmata sda.img

Per ripristinare il sistema da un backup, utilizzare il seguente comando:

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

Dopodiché, si riavvia il BIOS e si imposta il disco su cui è stato installato il sistema come priorità di avvio, si riavvia e si prova ad avviare il sistema.