Tips en Trucs 2022

Ontspannen en herstellen met ReaR

Het maken van back-ups en het herstellen van een Linux systeem is een veel voorkomende activiteit voor iedereen die met computers werkt. Hoewel veel ad-hoc hulpprogramma's helpen bij het beheren van back-ups, richt deze tip zich op het ReaR - Relax and Recover hulpprogramma. Ja, je leest het goed - een hulpmiddel om je te helpen met je gemoedsrust (relax) als het aankomt op het uitvoeren van alledaagse back-up en herstel operaties.

ReaR is een open source beheerprogramma om herstel archieven en bootable ISO images van een Linux systeem te maken. Door integratie met een bestaande back-up oplossing, kan ReaR ook worden gebruikt als een back-up en herstel hulpprogramma.

Hoe werkt het?

ReaR creëert een opstartbaar image bestaande uit de laatste staat van het systeem waarvan een back-up moet worden gemaakt. Het geeft de beheerder ook de flexibiliteit om bestanden te selecteren voor back-up. Het wordt ten zeerste aanbevolen om ReaR pro-actief uit te voeren volgens bestaande back-upschema's, zodat je over de actuele status van het systeem beschikt.

Let op: Rear gebruikt een back-up systeem gebaseerd op bestanden en dit werkt niet goed samen met bestandssystemen zoals het door openSUSE standaard gebruikte Btrfs. Zelf gebruik ik thuis steeds Ext4 als bestandssysteem.

Virtueel testen: een reservekopie hebben is belangrijk, maar een werkende reservekopie is nog belangrijker. Daarom test ik een nieuwe back-up programma's eerst grondig in een virtuele computer zoals beschreven in KVM/QEMU, daarna op een computer die niet zo belangrijk is (desnoods een test computer) en pas daarna op een systeem waarop ik het back-up systeem wil gebruiken. Voorzichtigheid is dus geboden.

ReaR installeren

ReaR is niet aanwezig in de standaard softwarebronnen van openSUSE Leap 15.4, maar wel in de Archiving:/Backup:/Rear softwarebron. Daarenboven heb je software nodig waarmee je ISO bestanden kunt aanmaken, beschikbaar in de softwarebron home:/cabelo. Deze voeg je als volgt toe aan het software beheer van openSUSE:

dany@virtueel:~> sudo zypper addrepo -f https://download.opensuse.org/repositories/Archiving:/Backup:/Rear/15.4/ Rear
[sudo] wachtwoord voor root: 
Opslagruimte 'Rear' wordt toegevoegd ........................................................................................[gereed]
Opslagruimte 'Rear' is toegevoegd

URI                    : https://download.opensuse.org/repositories/Archiving:/Backup:/Rear/15.4/
Ingeschakeld           : Ja
GPG-controle           : Ja
Automatisch vernieuwen : Ja
Prioriteit             : 99 (standaard prioriteit)

Prioriteiten van opslagruimtes hebben geen effect. Alle ingeschakelde opslagruimtes delen dezelfde prioriteit.
dany@virtueel:~> sudo zypper addrepo -f https://download.opensuse.org/repositories/home:/cabelo/15.4/ Cabelo
Opslagruimte 'Cabelo' wordt toegevoegd ......................................................................................[gereed]
Opslagruimte 'Cabelo' is toegevoegd

URI                    : https://download.opensuse.org/repositories/home:/cabelo/15.4/
Ingeschakeld           : Ja
GPG-controle           : Ja
Automatisch vernieuwen : Ja
Prioriteit             : 99 (standaard prioriteit)

Prioriteiten van opslagruimtes hebben geen effect. Alle ingeschakelde opslagruimtes delen dezelfde prioriteit.

Daarna kan je ReaR installeren met de gebruikelijke opdracht. Aangezien we voor het eerst gebruik maken van de pas toegevoegde softwarebronnen, wordt ook gevraagd of je deze vertrouwd. Daar antwoord ik altijd (a) op, waardoor je in het vervolg ook automatisch updates ontvangt.

dany@virtueel:~> sudo zypper install rear genisoimage syslinux

Een nieuwe handtekening voor een opslagruimte of pakket is ontvangen:

  Opslagruimte:              Cabelo
  Vingerafdruk van sleutel:  1553 C74F C763 CE08 361E 8F09 18B6 CC30 405F 642D
  Sleutelnaam:               home:cabelo OBS Project 
  Sleutelalgoritme:          RSA 2048
  Sleutel aangemaakt:        di 24 aug 2021 02:20:17 CEST
  Sleutel verloopt op:       do 02 nov 2023 01:20:17 CET
  Rpm-naam:                  gpg-pubkey-405f642d-61243b41



    Opmerking: Ondertekenen van gegevens maakt het mogelijk voor de ontvanger om te controleren dat
    er na het ondertekenen geen wijzigingen zijn geweest na het ondertekenen. Accepteren van
    pakketten met foute ondertekening kan leiden tot een corrupt systeem en in extreme gevallen
    zelfs tot een gecompromitteerd systeem.

    Opmerking: Een GPG publieke sleutel wordt betrouwbaar geïdentificeerd door zijn vingerafdruk.
    Vertrouw niet op de sleutelnaam. Als u niet zeker bent of de gepresenteerde sleutel is autentiek
    is, vraag dan de leverancier van de opslagruimte of controleer zijn website. Veel leveranciers
    onderhouden een webpagina die de vingerafdrukken tonen van de GPG sleutels die ze gebruiken.

Wilt u de sleutel verwerpen, tijdelijk vertrouwen of altijd vertrouwen? [v/t/a/?] (v): a
Ophalen van metagegevens uit opslagruimte 'Cabelo' ..........................................................................[gereed]
Cache van opslagruimte 'Cabelo' wordt gebouwd ...............................................................................[gereed]

Een nieuwe handtekening voor een opslagruimte of pakket is ontvangen:

  Opslagruimte:              Rear
  Vingerafdruk van sleutel:  985D 26DB 1764 72E4 5FFE 5FF5 1B4D D1E2 FFC8 DD5F
  Sleutelnaam:               Archiving:Backup:Rear OBS Project 
  Sleutelalgoritme:          RSA 2048
  Sleutel aangemaakt:        vr 17 jan 2020 12:21:57 CET
  Sleutel verloopt op:       zo 27 mrt 2022 13:21:57 CEST (VERLOPEN)
  Rpm-naam:                  gpg-pubkey-ffc8dd5f-5e2198d5



    Opmerking: Ondertekenen van gegevens maakt het mogelijk voor de ontvanger om te controleren dat
    er na het ondertekenen geen wijzigingen zijn geweest na het ondertekenen. Accepteren van
    pakketten met foute ondertekening kan leiden tot een corrupt systeem en in extreme gevallen
    zelfs tot een gecompromitteerd systeem.

    Opmerking: Een GPG publieke sleutel wordt betrouwbaar geïdentificeerd door zijn vingerafdruk.
    Vertrouw niet op de sleutelnaam. Als u niet zeker bent of de gepresenteerde sleutel is autentiek
    is, vraag dan de leverancier van de opslagruimte of controleer zijn website. Veel leveranciers
    onderhouden een webpagina die de vingerafdrukken tonen van de GPG sleutels die ze gebruiken.

Wilt u de sleutel verwerpen, tijdelijk vertrouwen of altijd vertrouwen? [v/t/a/?] (v): a
Waarschuwing: De GPG-ondertekeningssleutel van bestand 'repomd.xml' is verlopen.
  Opslagruimte:              Rear
  Vingerafdruk van sleutel:  985D 26DB 1764 72E4 5FFE 5FF5 1B4D D1E2 FFC8 DD5F
  Sleutelnaam:               Archiving:Backup:Rear OBS Project 
  Sleutelalgoritme:          RSA 2048
  Sleutel aangemaakt:        vr 17 jan 2020 12:21:57 CET
  Sleutel verloopt op:       zo 27 mrt 2022 13:21:57 CEST (VERLOPEN)
  Rpm-naam:                  gpg-pubkey-ffc8dd5f-5e2198d5
Ophalen van metagegevens uit opslagruimte 'Rear' ............................................................................[gereed]
Cache van opslagruimte 'Rear' wordt gebouwd .................................................................................[gereed]
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
'syslinux' is al geïnstalleerd.
Geen updatekandidaat voor bijwerken van 'syslinux-4.04-15.1.x86_64'. De hoogst beschikbare versie is al geïnstalleerd.
Pakketafhankelijkheden oplossen...

Het volgende aanbevolen pakket is automatisch geselecteerd:
  genisoimage

Het volgende pakket is aanbevolen, maar zal niet worden geïnstalleerd vanwege conflicten of problemen met afhankelijkheden:
  cdrkit-cdrtools-compat

De volgende 4 NIEUWE pakketten zullen worden geïnstalleerd:
  bc ebiso genisoimage rear

4 nieuwe te installeren pakketten.
Totale downloadgrootte: 1,1 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 4,4 MiB worden gebruikt.
Doorgaan? [j/n/v/...? alle opties tonen] (j): 
pakket genisoimage-1.1.11-lp154.1.1.x86_64 wordt opgehaald                                     (1/4), 383,7 KiB (  1,9 MiB uitgepakt)
Ophalen: genisoimage-1.1.11-lp154.1.1.x86_64.rpm ..............................................................[gereed (400,8 KiB/s)]
pakket bc-1.07.1-11.37.x86_64 wordt opgehaald                                                  (2/4), 111,0 KiB (218,7 KiB uitgepakt)
Ophalen: bc-1.07.1-11.37.x86_64.rpm .........................................................................................[gereed]
pakket ebiso-0.2.5-1.43.x86_64 wordt opgehaald                                                 (3/4),  27,4 KiB ( 39,6 KiB uitgepakt)
Ophalen: ebiso-0.2.5-1.43.x86_64.rpm ........................................................................................[gereed]
pakket rear-2.6-1.x86_64 wordt opgehaald                                                       (4/4), 641,9 KiB (  2,2 MiB uitgepakt)
Ophalen: rear-2.6-1.x86_64.rpm ..............................................................................................[gereed]

Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(1/4) Installeren van: genisoimage-1.1.11-lp154.1.1.x86_64 ..................................................................[gereed]
(2/4) Installeren van: bc-1.07.1-11.37.x86_64 ...............................................................................[gereed]
(3/4) Installeren van: ebiso-0.2.5-1.43.x86_64 ..............................................................................[gereed]
(4/4) Installeren van: rear-2.6-1.x86_64 ....................................................................................[gereed]

ReaR configureren

Bewerk het bestand /etc/rear/local.conf met de volgende configuraties:

OUTPUT
Bepaald het image type: USB, ISO, RAWDISK
OUTPUT_URL
Locatie van de back-up bestanden: NFS, CIFS, FILE, FTP, HTTP, RSYNC
BACKUP
Welke back-up methode gebruiken: externe of Rear methode?
BACKUP_URL
Locatie voor de interne ReaR back-up methode.
BACKUP_PROG_EXCLUDE
Welke mappen moeten niet in de back-up opgenomen worden.

Het configuratiebestand kan je aanpassen met bijvoorbeeld de nano editor:

dany@virtueel:~> sudo nano /etc/rear/local.conf

Deze krijgt dan bijvoorbeeld de volgende inhoud:

OUTPUT=ISO
OUTPUT_URL=cifs://pindabackup/yoga
BACKUP=NETFS
BACKUP_URL=cifs://pindabackup/yoga
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/run/media' '/var/tmp' '/var/crash')

De URL instellingen wijzen naar een NAS met de naam pindabackup en de gedeelde map yoga. De gedeelde map is publiek toegankelijk en heeft dus geen gebruikersnaam en bijhorend wachtwoord.

ReaR accepteert verschillende opties afhankelijk van of je een reddingsmedium moet maken en/of een back-up van het systeem als een tar-bestand.

rear mkbackup - maak een rescue media en back-up het systeem.
rear mkbackuponly - maak enkel het back-up tar bestand.
rear mkrescue - maak enkel de rescue media.

Een back-up maken

Een back-up met bijhorend herstel medium maak je aan met de volgende opdracht:

dany@virtueel:~> sudo rear -v -d mkbackup             
[sudo] wachtwoord voor root: 
Relax-and-Recover 2.6 / 2020-06-17
Running rear mkbackup (PID 1905)
Using log file: /var/log/rear/rear-virtueel.log
Running workflow mkbackup on the normal/original system
Using backup archive '/tmp/rear.KR9alHyNyJYMXby/outputfs/virtueel/backup.tar.gz'
Using autodetected kernel '/boot/vmlinuz-5.14.21-150400.22-default' as kernel in the recovery system
Creating disk layout
Overwriting existing disk layout file /var/lib/rear/layout/disklayout.conf
Using sysconfig bootloader 'grub2'
Verifying that the entries in /var/lib/rear/layout/disklayout.conf are correct ...
Creating recovery system root filesystem skeleton layout
Handling network interface 'eth0'
eth0 is a physical device
Handled network interface 'eth0'
Copying logfile /var/log/rear/rear-virtueel.log into initramfs as '/tmp/rear-virtueel-partial-2022-07-09T15:26:48+02:00.log'
Copying files and directories
Copying binaries and libraries
Copying all kernel modules in /lib/modules/5.14.21-150400.22-default (MODULES contains 'all_modules')
Copying all files in /lib*/firmware/
Skip copying broken symlink '/etc/resolv.conf' target '/run/netconfig/resolv.conf' on /proc/ /sys/ /dev/ or /run/
Skip copying broken symlink '/etc/mtab' target '/proc/11687/mounts' on /proc/ /sys/ /dev/ or /run/
Testing that the recovery system in /tmp/rear.KR9alHyNyJYMXby/rootfs contains a usable system
Creating recovery/rescue system initramfs/initrd initrd.cgz with gzip default compression
Created initrd.cgz with gzip default compression (489267248 bytes) in 19 seconds
Making ISO image
Wrote ISO image: /var/lib/rear/output/rear-virtueel.iso (480M)
Copying resulting files to cifs location
Saving /var/log/rear/rear-virtueel.log as rear-virtueel.log to cifs location
Copying result files '/var/lib/rear/output/rear-virtueel.iso /tmp/rear.KR9alHyNyJYMXby/tmp/VERSION /tmp/rear.KR9alHyNyJYMXby/tmp/README /tmp/rear.KR9alHyNyJYMXby/tmp/rear-virtueel.log' to /tmp/rear.KR9alHyNyJYMXby/outputfs/virtueel at cifs location
Making backup (using backup method NETFS)
Creating tar archive '/tmp/rear.KR9alHyNyJYMXby/outputfs/virtueel/backup.tar.gz'
Archived 2417 MiB [avg 12317 KiB/sec] OK
WARNING: tar ended with return code 1 and below output:
  ---snip---
  tar: /var/spool/postfix/private/defer: socket ignored
  tar: /var/spool/postfix/private/local: socket ignored
  tar: /var/spool/postfix/private/scache: socket ignored
  ----------
This means that files have been modified during the archiving
process. As a result the backup may not be completely consistent
or may not be a perfect copy of the system. Relax-and-Recover
will continue, however it is highly advisable to verify the
backup in order to be sure to safely recover this system.

Archived 2417 MiB in 202 seconds [avg 12256 KiB/sec]
Exiting rear mkbackup (PID 1905) and its descendant processes ...
Running exit tasks
You should also rm -Rf /tmp/rear.KR9alHyNyJYMXby

Na enkele minuten worden de bestanden die in lokale mappen zijn opgeslagen over het netwerk gekopieerd naar de gedeelde doellocatie op afstand.

Om de aangemaakte reservekopie bestanden te bekijken, koppel je de back-up locatie (gedeelde publieke NAS map) aan het bestandssysteem met de opdracht:

dany@virtueel:~> sudo mount -t cifs //pindabackup/yoga /mnt
[sudo] wachtwoord voor root: 
🔐 Password for root@//pindabackup/yoga:

Bij een publiekelijk gedeelde map druk je bij de vraag naar een wachtwoord gewoon op Return. De reservekopie bestanden werden door ReaR gegroepeerd in een map met als naam de hostnaam van het systeem waarvan je een back-up hebt genomen. De inhoud krijg je dan met:

dany@virtueel:~> ls -l /mnt/virtueel/
totaal 2984296
-rwxr-xr-x 1 root root   16234154  9 jul 15:30 backup.log
-rwxr-xr-x 1 root root 2536978396  9 jul 15:27 backup.tar.gz
-rwxr-xr-x 1 root root        202  9 jul 15:27 README
-rwxr-xr-x 1 root root  502564864  9 jul 15:27 rear-virtueel.iso
-rwxr-xr-x 1 root root     121942  9 jul 15:27 rear-virtueel.log
-rwxr-xr-x 1 root root        272  9 jul 15:27 VERSION

De publiekelijk gedeelde map koppel je terug los met:

dany@virtueel:~> sudo umount /mnt

Zoals je merkt bevat ook de naam van het aangemaakte rescue medium bestand (rear-virtueel.iso) en het log bestand de hostnaam van het systeem. De reservekopie zelf werd bewaard in het bestand backup.tar.gz.

De ReaR opdracht eindigt met de suggestie om de map die tijdens de mkbackup operatie is aangemaakt te verwijderen.

dany@virtueel:~> sudo rm -Rf /tmp/rear.KR9alHyNyJYMXby
[sudo] wachtwoord voor root:

Systeem herstellen via rescue medium

Het systeem wordt hersteld met behulp van het image rear-virtueel.iso. Start de computer op met de DVD als eerste boot device en kies Recover virtueel of Automatic Recover virtueel.
ReaR

Wij gebruiken de Recover optie om het systeem handmatig te herstellen. Het systeem start op met de ReaR-banner met details over uw back-up en uitvoertype.
ReaR banner

Log in als root gebruiker zonder dat er om een wachtwoord wordt gevraagd.

Welcome to Relax-and-Recover. Run "rear recover" to restore your system !

Zoals voorgesteld door de login-banner, voer je rear recover uit om het systeem te herstellen door verbinding te maken met de gedeelde map op de NAS. Haal van daaruit backup.tar.gz op en gebruik het om het systeem te herstellen met de juiste permissies. Druk daarbij terug op Return om toegang te krijgen tot de publiekelijk gedeelde NAS map.

RESCUE virtueel:~ # rear -v -d recover
Relax-and-Recover 2.6 / 2020-06-17
Running rear recover (PID 678)
Using log file: /var/log/rear/rear-virtueel.log
Running workflow recover within the ReaR rescue/recovery system
Using backup archive '/tmp/rear.SGEvJDmN9fRsPi7/outputfs/virtueel/backup.tar.gz'
Will do driver migration (recreating initramfs/initrd)
Calculating backup archive size
Backup archive size is 2.4G     /tmp/rear.SGEvJDmN9fRsPi7/outputfs/virtueel/backup.tar.gz (compressed)
Comparing disks
Device vda has expected (same) size 68719476736 bytes (will be used for 'recover')
Disk configuration looks identical
UserInput -I DISK_LAYOUT_PROCEED_RECOVERY needed in /usr/share/rear/layout/prepare/default/250_compare_disks.sh line 148
Proceed with 'recover' (yes) otherwise manual disk layout configuration is enforced
(default 'yes' timeout 30 seconds)
yes
UserInput: No choices - result is 'yes'
User confirmed to proceed with 'recover'
Start system layout restoration.
Disk '/dev/vda': creating 'gpt' partition table
Disk '/dev/vda': creating partition number 1 with name ''vda1''
Disk '/dev/vda': creating partition number 2 with name ''vda2''
Disk '/dev/vda': creating partition number 3 with name ''vda3''
Creating filesystem of type ext4 with mount point / on /dev/vda2.
Mounting filesystem /
Creating swap on /dev/vda3
Disk layout created.
Password for root@//pindabackup/yoga:                          
Restoring from '/tmp/rear.SGEvJDmN9fRsPi7/outputfs/virtueel/backup.tar.gz' (restore log in /var/lib/rear/restore/recover.backup.tar.gz.678.restore.log) ...
Restored 5667 MiB [avg. 152717 KiB/sec] OK
Restored 5741 MiB in 39 seconds [avg. 150755 KiB/sec]
Restoring finished (verify backup restore log messages in /var/lib/rear/restore/recover.backup.tar.gz.678.restore.log)
Created SELinux /mnt/local/.autorelabel file : after reboot SELinux will relabel all files
Recreating directories (with permissions) from /var/lib/rear/recovery/directories_permissions_owner_group
Migrating disk-by-id mappings in certain restored files in /mnt/local to current disk-by-id mappings ...
Running mkinitrd...
Recreated initrd (/sbin/mkinitrd).
Installing GRUB2 boot loader...
Determining where to install GRUB2 (no GRUB2_INSTALL_DEVICES specified)
Found possible boot disk /dev/vda - installing GRUB2 there
Finished 'recover'. The target system is mounted at '/mnt/local'.
Exiting rear recover (PID 678) and its descendant processes ...
Running exit tasks
You should also rm -Rf /tmp/rear.SGEvJDmN9fRsPi7

Inspectie van /var/log/rear/rear-virtueel.log geeft je details over hoe de restauratie is verlopen.

De server kan nu opnieuw worden opgestart.

RESCUE virtueel:~ # shutdown -r now

Kies de harde schijf als opstartapparaat. Tijdens het herstel proces maakt de server verbinding met de gedeelde NAS map en zet vervolgens het backup.tar.gz bestand over naar jouw lokale map. Controleer dit via het bestand /var/log/rear/recover/restore/recover.backup.tar.gz.678.restore.log wanneer de herstelbewerking is voltooid.

De hersteltijd varieert afhankelijk van de grootte van het backup.tar.gz bestand.

Alternatief

Een alternatief dat ik nog steeds gebruik is fsarchiver. In de tip SystemRescueCD op USB-stick zetten en uitbreidingen toevoegen beschrijf ik hoe je fsarchiver met een script en SystemRescueCD kunt ombouwen tot een volwaardig back-up systeem.

Het enige minpunt van ReaR is dat je een back-up maakt van een werkend systeem. Dit is handig als het systeem in tussentijd moet blijven werken, maar heeft als gevolg dat sommige bestanden tijdens het maken van de back-up in gebruik zijn. Misschien was het beter om ook via het rescue meduim een back-up te maken.