Backup integrale, anche di un disco di sistema, da remoto in ambiente *nix.

Quando il backup del fornitore ha dei problemi… temporanei!!

Photo by Kevin Horvat on Unsplash


Situazione:

avete la vostra bella macchina VPS hostata da un provider che, normalmente, vi permette di fare il backup, della vostra macchina, sulla loro struttura. Nel mio caso mi permettono di avere sino a due copie di backup in date diverse, volendo.

I backup in questione vengono eseguiti attraverso il più classico dei comandi dd e depositati su una loro struttura NAS interna. Questo sistema è decisamente molto di aiuto quando dovete recuperare la macchina dopo aver fatto qualche disastro che vi rende la macchina viva ma non funzionante o totalmente non bootabile.


Problema:

per qualche motivo il sistema di backup, che è manuale via web page, fornito dal vostro provider, non funziona, e voi avete fatto delle grosse modifiche al vostro sistema. Vi serve fare un backup per evitare di perdere tutto il lavoro fatto, ma non potete fare seguendo la solita procedura via web. Come fare?


Soluzione:

sfruttando il vostro accesso ssh, alla vostra macchina remota ed approfittando delle possibilità di piping tra vari processi, sia locali, che remoti eseguiamo dal nostro sistema domestico:

ssh -C utente_remoto@ip_remoto "dd if=/dev/sda of=- " | dd of=/path/locale/mia-copia-locale.iso

Praticamente facciamo le seguenti operazioni:

  1. ci colleghiamo come utente_remoto alla macchina ip_remoto, via ssh;
  2. lanciamo il comando dd specificando, in input, il nostro device (attenzione a non selezionare anche la partizione, se si tratta di un disco contenente il sistema operativo, di cui vogliamo fare un eventuale restore, quindi no if=/dev/sda1 ma if=/dev/sda !!)
  3. sfruttando il meccanismo di piping, reindirizziamo l’uscita del comando dd if=/dev/sda sulla macchina remota, verso un’altro processo dd locale in cui specifichiamo solo il parametro di uscita quindi of=mia-copia-locale.iso

Volendo monitorare lo stato di progressione della copia, possiamo inserire il parametro staus=progress in uno dei due comandi dd: su entrambi non avrebbe senso.

Se state usando un Mac, il parametro status=progress non viene riconosciuto, per cui usando il mio Mac per copiare un disco remoto, integralmente, con dd il comando sarà:

ssh -C utente_remoto@ip_remoto "dd if=/dev/sda of=- status=progress" | dd of=/path/locale/mia-copia-locale.iso

Quindi status=progress sarà sul lato sinistro che si riferisce alla macchina remota, che sono certo trattarsi di un sistema Linux.

Se usate status=progress  sul lato Mac otterrete un errore di parametro sconosciuto simile a questo:dd: unknown operand status!!

Buon backup!!

J.C.


NOTA: il paramentro status=progress non viene riconosciuto dal comando dd in ambiente MacOs, quindi, nel caso il vostro sistema locale lo sia, aggiungete il parametro status=progress sul lato linux.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *