User Tools

Site Tools


doc:appunti:linux:sa:restore_bare_metal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
doc:appunti:linux:sa:restore_bare_metal [2023/02/08 15:33] – created niccolodoc:appunti:linux:sa:restore_bare_metal [2023/02/08 18:54] (current) – [Copiare una directory da host remoto] niccolo
Line 1: Line 1:
-====== Ripristino backup da zero ======+====== GNU/Linux Bare Metal Restore ======
  
-Alcuni appunti su come recuperare un host completamente perso, cioè come effettuare un **//bare metal restore//**.+Appunti vari su come recuperare un host che sia andato completamente perso a partire da un backup, cioè come effettuare un **//bare metal restore//**. 
 + 
 +===== Partizionamento del disco ===== 
 + 
 +In generale si dovrà avere una macchina nuova con un disco vuoto su cui effettuare il restore. È possibile contestualmente aggiornare una macchina con disco partizionato col metodo obsoleto **DOS/MBR** e un **BIOS legacy** ad una installazione con disco partizionato **GPT** e boot **EFI**. 
 + 
 +Dopo aver avviato la macchina con una distribuzione live moderna (es. **[[https://grml.org/|GRML 2022]]**), si esegue il partizionamento con **parted**: 
 + 
 +<code> 
 +parted /dev/sda 
 +</code> 
 + 
 +Uno schema standard con partizioni per GRUB, una per le immagini EFI e partizioni separate per **rootfs**, **swap**,  **var** e **home** viene realizzato come segue: 
 + 
 +<code> 
 +mklabel gpt 
 +mkpart primary   1.0MB   10.0MB 
 +mkpart primary  10.0MB  100.0MB 
 +mkpart primary 100.0MB   60.0GB 
 +mkpart primary  60.0GB   68.0GB 
 +mkpart primary  68.0GB  200.0GB 
 +mkpart primary 200.0GB  100% 
 +set 1 bios_grub on 
 +set 2 boot on 
 +set 2 esp on 
 +name 3 rootfs 
 +name 4 swap 
 +name 5 var 
 +name 6 home 
 +</code> 
 + 
 +La partizione **bios_grub** deve contenere solo il secondo stadio di GRUB, quindi **1 Mb** sarebbe già sufficiente. La partizione **boot esp** contiene invece il codice EFI per i vari sistemi operativi installati (in caso di sistemi multiboot); un solo sistema operativo GNU/Linux Debian 11 richiede un BIOS EFI di circa **6 Mb**. 
 + 
 +===== Restore da Borg Backup ===== 
 + 
 +Se si utilizza **Borg backup** per effettuare le copie di sicurezza è necessario eseguire il restore dell'ultima versione disponibile. 
 + 
 +FIXME 
 + 
 + 
 +===== Copiare una directory da host remoto ===== 
 + 
 +Se i file originali sono contenuti semplicemente in una directory di un host remoto è possibile copiarli, ma si devono avere alcune accortezze. Ad esempio **scp** non va bene perché segue i link simbolici (cioè copia i file e non ricrea i link). 
 + 
 +Se si desidera copiare una directory da un host remoto **mantenendo i symlink** si può ricorrere ad un trucco che utilizza **tar**. In questo esempio si esegue ssh dalla macchina vuota verso l'host che contiene i dati, quindi è possibile trasferire con tar una intera cartella: 
 + 
 +<code bash> 
 +cd / 
 +ssh root@backup.server.org 'cd /home/backups/restore/; tar cf - bin' | tar xvf - --numeric-owner 
 +</code> 
 + 
 +Vedere come si può usare **rsync** FIXME 
 + 
 +===== MySQL ===== 
 + 
 +Si deve creare la data directory, assegnare i permessi opportuni e inizializzarla (testato con MariaDB 10.5 su Debian 11 Bullseye): 
 + 
 +<code> 
 +mkdir /var/lib/mysql 
 +chown mysql.mysql /var/lib/mysql/ 
 +chmod 700 /var/lib/mysql/ 
 +mysql_install_db 
 +systemctl start mysql 
 +</code> 
 + 
 +Quindi è possibile fare il restore del file creato con **%%mysqldump --all-databases%%**: 
 + 
 +<code> 
 +zcat /home/backups/mysql/20230205.dump.gz | mysql 
 +</code> 
 + 
 +===== PostgreSQL ===== 
 + 
 +Se la data directory è completamente vuota bisogna crearla con i permessi giusti: 
 + 
 +<code> 
 +mkdir -p /var/lib/postgresql/13/main 
 +mkdir -p /var/log/postgresql/ 
 +chown -R postgres.postgres /var/lib/postgresql/ 
 +chown -R postgres.postgres /var/log/postgresql/ 
 +chown -R postgres.postgres /etc/postgresql/ 
 +</code> 
 + 
 +Quindi va inizializzata: 
 + 
 +<code> 
 +su - postgres 
 +/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main 
 +</code> 
 + 
 +A questo punto è possibile avviare il servizio: 
 + 
 +<code> 
 +systemctl start postgresql@13-main 
 +</code> 
 + 
 +E fare il restore del file creato con **pg_dumpall**: 
 + 
 +<code> 
 +su - postgres 
 +psql --file=pg_dumpall_20230206.dump 
 +</code>
  
doc/appunti/linux/sa/restore_bare_metal.1675866788.txt.gz · Last modified: 2023/02/08 15:33 by niccolo