Backup di una partizione cifrata con dm-crypt e LUKS

Nel corso degli ultimi mesi ho sperimentato 2 modi di effettuare backup spot (ovvero non automatizzati ma fatto una volta ogni tanto) di una partizione, la /home in questo specifico caso,  cifrata con dm-crypt e LUKS.
In entrambi i metodi il backup viene fatto su questo fantastico disco USB 3 di Toshiba:

IMG_20160823_094617~01

Ho sempre un po' di difficoltà nel visualizzare mentalmente la logica di LUKS, che dovrebbe essere questa:
PARTIZIONE
--> CONTENITORE LUKS CIFRATO
----> CONTENITORE LUKS APERTO E REFERENZIATO TRAMITE /dev/mapper/nome_dev
------> FILE SYSTEM "TRADIZIONALE"

Voglio effettuare il backup di /home (sda6) in una partizione (sdd1) del disco esterno USB 3.0 Toshiba, che generalmente monto in /root/mnt.

PRIMO METODO)
Creo un'immagine della partizione montata in /home, nel mio caso sda6, tramite dd (anzi, dd_rescue) e la salvo su di una partizione, in questo caso sdd1 formattata exFat, del disco usb.

Vantaggi

  • Semplicità - basta un comando.
  • Rapidità  - Copiare un unico file, per quanto grosso sia, è molto più veloce di copiare milioni di "piccoli" file.
  • Portabilità - Posso accedere all' immagine (cifrata) da qualunque pc con qualunque sistema operativo (vedere poi cosa contiene è un altro discorso).

Svantaggi

  • Dimensioni - L'immagine è sempre grossa quanto la partizione, indipendentemente da quanto la partizione è occupata. Non si può neanche comprimere visto che la cifratura rende tutto casuale e sostanzialmente incomprimibile.
  • Complicazioni in fase di montaggio - Vabbè, bisogna creare il dispositivo di loop, montare la partizione cifrata , sbloccarla etc..
  • Backup solo a disco smontato - Per effettuare questo tipo di backup bisogna necessariamente smontare la partizione se si vogliono evitare spiacevoli inconvenienti.

Esecuzione

Backup:
- Smonto la /home e chiudo il contentore LUKS.
- Monto il disco usb in /root/mnt.
- Creo una directory in cui conserverò l'immagine (/root/mnt/backup/home).
- Mi porto in questa directory e digito:

Il sync dura poi altri 30 secondi, quindi in totale 8 minutti e mezzo per 54GB.

Lettura Backup:
Dopo aver montato l'hdd formattato exFat in /root/mnt devo creare un loop device e associarlo all'immagine di backup conservata nell'hd.

Sblocco l'immagine cifrata (la decifro e referenzio la parte non cifrata tramite /dev/mapper/home_crypt).

Monto l'immagine della mia home in un mount-point a piacere (/root/crypt).

Faccio quel che devo fare, poi smonto e chiudo tutto coi soliti comandi.

 

SECONDO METODO)
Creo sul disco usb su cui voglio fare il backup una partizione cifrata tramite dm-crypt/LUKS. Poi mi limito a copiare tramite rsync (ma potrei usare anche tar o cp o quel che preferisco) i dati della /home su questa partizone appena creata.

Vantaggi

  • Comodità - Una volta sbloccata la partizione del disco usb avrò i miei dati pronti e leggibili.
  • Dimensioni  - Lo spazio occupato sarà realmente la somma di tutti i file e directory della home: posso pure comprimerli volendo o anche scegliere di non copiarne alcuni.
  • Backup incrementali/differenziali - Posso pensare di effettuare backup incrementali con tar, oppure di andare semplicemente a sincronizzare ogni volta che voglio la /home vera con quella memorizzata sul disco tramite rsync.
  • Backup a partizione montata.

Svantaggi

  • Durata del backup - L'rsync di decine di migliaia di file è piuttosto lento (almeno la prima volta).

Esecuzione

Backup:
Per prima cosa controllo la salute del disco usb tramite i comandi smart.

Creo un guid partition table con mbr proactive (già c'è ma lo ricreo).

In questo momento non ci sono partizioni (sempre dal comando gdisk).

Creo una partizione da 1TiB di tipo linux (sempre dal comando gdisk).

Eccola, scrivo le modifiche effettuate (sempre dal comando gdisk).

Ora la solita procedura dm-crypt/LUKS che vado a rivedere rapidamente.

Creo il contenitore.

Backuppo l'header.

Guardo se è tutto ok.

Apro il contenitore decifrandolo.

Ecco il device referenziato da device mapper su cui andrò a creare il file system ext4 (in maniera conservativa).

Monto la partizione in /root/mnt.

Faccio il "backup" tramite rsync di /home/utente in /root/mnt/backup/home/

Nota che non ho messo la / alla fine della sorgente da salvare in quanto voglio che in destinazione venga salvata la directory "utente" e non direttamente il suo contenuto.

Solita documentazione dei paramentri -a e -A.

Smonto e chiudo il contenitore

Lettura backup:

Quando poi avrò bisogno di accedere al backup basterà attaccare l'hdd usb, decifrare la partizione, montarla e leggerne il contenuto.

 

 

 

 

Print Friendly, PDF & Email