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

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:restore_bare_metal [2023/02/08 15:34] niccolodoc:appunti:linux:sa:restore_bare_metal [2023/02/08 18:54] (current) – [Copiare una directory da host remoto] niccolo
Line 2: Line 2:
  
 Appunti vari su come recuperare un host che sia andato completamente perso a partire da un backup, 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.1675866840.txt.gz · Last modified: 2023/02/08 15:34 by niccolo