Home

 

Server::Backup en Restore

Index 
1.  Backup
    Backup methoden
    Server layout en backup strategie
    Backup Flowchart
    Overzicht van backuptaken
    Distributie Werkbelasting Serveronderhoud
2.  Operating System Backup
    Sysback Script
    Taak schedulen
    Gebruikersinstructies voor herstel met backups
    Herstel met backups en boot met rescue disk
    Rescue Mode
    Grub Restore
3.  BackupPC: App
    Installatie
    Wijzig poort BackupPC van 80/433 naar 81
    Backup Opslag Locatie
    Voeg BackupPC toe aan Sudoerslijst
    Voeg Admin 'ububen' toe aan groep 'backuppc'
    Basis Configuratie Instellingen
    BackupPC 4.4.0-8build1 Bug patch
4.  BackupPC: Serverdata backup
    Host 'server' configuratie
    Host 'server-afbeeldingen' configuratie
    Host 'server-documenten' configuratie
    Host 'server-muziek' configuratie
    Host 'server-video' configuratie
    Host 'server-www' configuratie
5.  BackupPC: Netwerk PC's backup
    HOSTS bestand voor 'lokaal DNS'
    WOL met BackupPC
    RSYNCD installeren en configureren op client-PC's
    GMail local backup met Thunderbird
    Thunderbird Backup en Restore
    BackupPC configuren voor backup van de client-PC's
    Host 'ben-pc' configuratie
    Host 'erica' configuratie
    Host 'tablet' configuratie
    Host 'benovo' configuratie
6.  Backupschema van een Host stopzetten.
    Testserver BackupPC schedule niet uitvoeren
7.  BackupPC: Backups Archiveren naar Vault
    archiveHost 'archivaris' Configureren
    archiveHost schedulen met script en cron
8.  Archief naar Externe Schijf
9.  BackupPC migreren naar andere server
10.  Backup naar Raspberry Pi Backup-Server

Naar index

BACKUP

Een back-up of reservekopie is een kopie van gegevens die zich op een gegevensdrager of binnen een applicatie bevinden om deze te kunnen herstellen mochten ze beschadigd raken. Deze kopieën worden preventief gemaakt om belangrijke gegevens veilig te stellen voor het geval de gegevens op de originele drager verloren gaan of beschadigd raken.

Indien nodig kan een back-up weer op een vergelijkbare originele drager teruggezet worden. Afhankelijk van het soort voorval waardoor de gegevens verloren gaan kunnen verschillende back-up methoden gebruikt worden:

Bij het opzetten van een back-up strategie moeten bovenstaande overwegingen meegenomen worden. Daarnaast moet er ook aan gedacht worden dat beschadigingen in gegevens vaak niet meteen opgemerkt worden en dat een recente back-up misschien al een kopie van de beschadigde gegevens bevat. Het is dus verstandig meerdere back-ups te bewaren over een langere periode.

Naar index

Backup methoden

Er zijn verschillende benaderingen mogelijk om een back-up te maken. Deze vallen globaal uiteen in twee methoden: back-ups van de volledige harde schijf, de zogenoemde image back-ups, en back-ups op bestandsniveau.

Image back-ups zijn vooral geschikt om in geval van een catastrofale fout van een harde schijf, de vervangende schijf snel volledig identiek in te richten.
Back-ups op bestandsniveau zijn daarentegen bedoeld om in geval van fouten in een of meer bestanden (bijvoorbeeld het onbedoeld verwijderen van een deel ervan, of het verwijderen van een bestandsmap) de bestanden weer terug te kunnen plaatsen zonder dat daarbij de rest van het systeem beïnvloed wordt. Ook is het mogelijk om oudere versies van bestanden, voor zover op een van de back-ups aanwezig, terug te plaatsen zodat deze met de huidige versie vergeleken kunnen worden.

Back-ups op bestandsniveau worden veel volgens het volgende schema uitgevoerd:

Ook het simpelweg kopiëren van belangrijke files is een vorm van back-up, die in bepaalde situaties effectief kan zijn.

Naar index

Server layout en backup strategie

Vanaf ClearOS 6 recommendeert ClearOS het centraliseren van gebruikersdata. Dit helpt niet alleen met opslagbeheer, maar vereenvoudigt ook backupbeheer.
Voor deze Ubuntu Server sluiten we ons hier bij aan.
Zie Server::Gebruikersdata Opslag voor de hiertoe aanbevolen structuur.

Voor de Ubuntu Servers is gekozen voor een traditioneel systeem met individuele HDD's en het toepassen van de 3-2-1 backup-regel

3-2-1 regel
Deze kan helpen bij de inrichting van je back­upproces. Zorg voor 3 versies van je data (de productiedata en twee back-ups), op 2 verschillende media (op fysiek gescheiden harde schijven), met 1 kopie op een andere locatie voor noodherstel (bijvoorbeeld een kluis in een ander gebouw).
Door back­ups op een andere locatie op te slaan kun je, indien bijvoorbeeld ransomware je bedrijfsnetwerk heeft versleuteld, je systemen herstellen.

De gekozen opslagstrategie op de Thuisserver benodigd 4 partities op 4 fysiek gescheiden HDD's:

  1. SSD nvme0n1p2 met / (root) inclusief /boot en het Ubuntu Server OS
    Note: De firmware van de Thuisserver heeft geen aparte partitie nodig voor /Boot
  2. SDA met '/Home/Live' gebruikersdata (Fileserver en Webserver)
  3. SDB met '/Home/Backup' van ssd nvme0n1, hdd SDA en netwerk PC's
  4. SDC met '/Vault' met backup van SDB

De backupdata op SDD worden uiteindelijk regelmatig weggeschreven naar een 'air-gapped' Backup Server

Naar index

Backup Flowchart Thuisserver

Zie voor een compleet overzicht van databronnen en backuplokaties de backup-flowchart

Onderstaande uitsnede van de flowchart toont de schijfstations ingedeeld volgens de 3-2-1 strategie

Naar index

Overzicht van backuptaken

Het volledige pakket van backups en methodes zoals deze in onderstaande volgorde in detail besproken gaat worden:

  1. Operating System Backup
    Sysback script voor opslag van het complete OS naar een fysiek gescheiden station
    Wekelijks naar /Vault
  2. BackupPC Serverdata
    App geconfigureerd voor backup en restore van serverdata (live naar backup)
    Dagelijks naar /Backup
  3. BackupPC Netwerk PC's
    App geconfigureerd voor backup en restore van client PC's op het lokale netwerk
    Dagelijks naar /Backup
  4. BackupPC Archivaris
    App geconfigureerd voor backup van alle data naar fysiek gescheiden station
    Wekelijks naar /Vault.
  5. PiWiGo data en Wordpress blog data /Store/Live dagelijks naar /Vault

Naar index

Distributie Werkbelasting Serveronderhoud

Door de vele backups en filescans kan een behoorlijke werkbelasting ontstaan en de backups van de netwerk-PC's vragen de nodige bandbreedte.
Het is daarom nuttig de nodige tijd te besteden aan een gelijkmatige distributie van de diverse taken.
Hier een voorbeeld zoals dit er op de homeserver uitziet:

Naar index

Operating System Backup

Voor het maken van een snapshot van het complete OS naar een fysiek gescheiden station is het script 'sysback' samengesteld.
Met de tarball van de snapshot kan het OS hersteld worden.

Naar index

Sysback Script

Klik hier om het 'sysback' script te bekijken en/of gebruik Save As om bestand op te slaan.
In het begin van het script worden verschillende variables opgeslagen o.a. het pad waar de backups opgeslagen moeten worden (sysbackdir). In deze sectie kan het script dus eenvoudig aangepast worden aan de serverconfiguratie.

Zie ook Server::Utility Scripts sectie Optie 1: Server OS backup

# Set VARIABLES
# Geef hier aan waar backups opgeslagen moeten worden
sysbackdir="/vault/sysback/";

# Geef hier aan welk datumformaat gebruikt moet worden voor de bestandsnaam van de backup
datestamp=$(date +%Y%m%d)

Daarna wordt een tarball gemaakt van de essentiële delen van het OS. Dit archief wordt voorzien van een bestandsnaam met daarin opgenomen de timestamp. Elke keer dat een een nieuwe backup gemaakt wordt, wordt deze dus weggeschreven met een nieuwe naam.
Voorbeeld scriptsectie:

# Maak tarball van systeem bestanden
tar --exclude=swap.img --exclude=/proc --exclude=/dev --exclude=/tmp --exclude=/mnt
    --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/cache/apt/archives
    --exclude=/usr/src/linux-headers* --exclude=/home --exclude=/store
    --exclude=/vault --exclude=/var/www/html
  -cvzf $sysbackdir$datestamp"-sysback.tar.gz" /;

# delete bestaande tarballs die meer dan twee weken oud zijn
find $sysbackdir -maxdepth 1 -mtime +14 -name *sysback.* -exec rm {} \;;

In de eerste regel wordt een tarball gecreëerd (tar -c) op de locatie 'sysbackdir' dat de naam krijgt beginnend met de 'datestamp' gevolgd door '-sysback'. Het archief wordt gemaakt van '/' (root), dus in feite de gehele server behalve de uitgefilterde secties gespecificeerd met --exclude.
In de tweede regel wordt op de opslaglocatie gezocht naar '*sysback.*' bestanden die ouder zijn dan 14 dagen en deze worden verwijderd met commando '-exec rm'

Naar index

Taak schedulen

Het maken van de backup wordt wekelijks uitgevoerd door middel van een 'cron' (var/spool/cron/root) die het script aanroept.

 15 0 * * 0 /usr/local/bin/sysback &> /dev/null

Met deze cron draait het script elke dag om 00:15 uur.

Tevens kan de backup manueel gestart worden vanuit het script 'backup'. Zie hiervoor Server::Utility Scripts sectie Optie 1: Server OS backup

Naar index

Gebruikersinstructies voor herstel met backups

Klik hier om het document 'sysback_restore_readme' met gebruikersinstructies te bekijken.

Hieronder informatie voor het terugzetten van het systeem (of secties hiervan) met de backup.

  1. De backups zijn opgeslagen in /vault/sysback
  2. Als de backups in /vault missen of corrupt (ransomware) zijn gebruik dan de backups op de Backup-Server
  3. De tarball is gecreëerd met het path vanuit root '/', dus de extract (restore) uitvoeren vanuit root!!!

Een voorbeeld met een backup met naam: 20151025-sysback.tar.gz:

Extract tarball vanuit root
# cd /
Haal lijst met beschikbare tarballs
# ls /vault/sysback
Geef lijst van bestanden in gekozen tarball
# tar -tzvf /vault/sysback/20151025-sysback.tar.gz
Geef lijst van bestanden in specifieke map(pen) in gekozen tarball
# tar -tzvf /vault/sysback/20151025-sysback.tar.gz user/local/bin/sysback

Restore complete '/' directorie en subdirectories
# tar -xzvf /vault/sysback/20151025-sysback.tar.gz
Restore alleen subdir 'usr' en al z'n subdirectories
# tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr
restore alleen bestand 'sysback'
# tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr/local/bin/sysback

Naar index

Herstel met backups en boot met rescue disk

Als een root map beschadigd of verwijderd is kan in veel gevallen het systeem niet meer opstarten.
In zo'n geval moeten we de machine booten met de installatie disk.
Gebruik voor restore het Sysback bestand in /vault/sysback of op de Backup-Server SSD /vault/sysback

Voorbeeld van de te volgen procedure voor het herstel van de map /usr

  1. Start de machine met monitor en de installatiedisk Ubuntu Server
  2. Selecteer Troubleshooting en vervolgens 'Rescue system' en vervolgens het systeem laten proberen de systeemimage op /mnt/sysimage te laten zetten.
  3. Als dit lukt dan worden 4 opties geboden, kies 1 - Continue en volg instructies: Press Return naar Shell en geef commando chroot /mnt/sysimage.
    Het OS is nog steeds die opgestart is van de Installatiedisk, maar wij zijn nu in de Server bestanden.
  4. # cd /
  5. # ls -l /vault/sysback
    (geeft listing met de meest recente sysback tarballs bv 20161099-sysback.tar.gz)
  6. # tar -xzvf /vault/sysback/20161099-sysback.tar.gz usr

Hiermee is /usr teruggezet met de backup

Naar index

Rescue mode

Optie als het OS van de Installatiedisk het systeem niet kan mounten op /mnt/sysimage

Zie ook How to Boot Ubuntu into Rescue / Emergency Mode

  1. Start de machine met monitor zonder installatiedisk
  2. Zodra het PC flash screen verschijnt ‘SHIFT & ESC’ key vasthouden tot grub bootladerscherm opent.
    Als je het Ubuntu logo ziet, heb je het punt gemist voor het GRUB menu, probeer opnieuw.
  3. Optie 1:
    Scroll naar de optie: Advanced Options
    Scroll naar 'root' en vervolg als root aan de commandlijn.
    Zoek de fout en/of gebruik de sysback tarball zoals hierboven beschreven om bestanden terug te zetten.
  4. Optie2 voor Rescue Mode:
    In grub menu: Selecteer 1e optie 'Ubuntu' en klik 'e' om naar edit mode te gaan.
    Ga naar het einde van de regel die start met linux en delete de string ‘$vt_handoff’ en voeg hier toe:
    systemd.unit=rescue.target
    Na het maken van deze wijziging klik Ctrl+x or F10 om naar rescue mode te booten.
    Zoek de fout en/of gebruik de sysback tarball zoals hierboven beschreven om bestanden terug te zetten.
  5. Optie 3 voor Emergency Mode :
    In grub menu: Selecteer 1e optie 'Ubuntu' en klik 'e' om naar edit mode te gaan.
    Ga naar het einde van de regel die start met linux en delete de string ‘$vt_handoff’ en voeg hier toe:
    systemd.unit=emergency.target
    Na het maken van deze wijziging klik Ctrl+x or F10 om naar rescue mode te booten.
    Zoek de fout en/of gebruik de sysback tarball zoals hierboven beschreven om bestanden terug te zetten.

Naar index

Grub Restore

De tarball xxxxxxxx-sysback.tar.gz bevat de rootbestanden en de kernel.
Na een restore met dit bestand zal Linux mogelijk niet opstarten en moet het bootprogramma GRUB hersteld worden.
Hiervoor moeten de monitor en keyboard aangesloten worden en de computer geboot worden met de Boot-Repair-Disk.
Zie gebruiksinstructies op https://sourceforge.net/p/boot-repair-cd/home/Home/

Dit repair-tool is te downloaden van https://sourceforge.net

Naar index

BackupPC: App Installatie

BackupPC is gratis disk-to-disk backup pakket met een web-based frontend.
BackupPC is een module voor het maken van backups van Windows en Linux servers en PC's naar een serverschijf. Het ondersteunt het maken van backups via SMB (Server Message Block) gebruikmakend van Samba, tar over SSH/RSH/NFS of Rsync.
BackupPC is een robuuste, betrouwbare en goed gedocumenteerde Applicatie

Naar index

Installatie

Update de repository:
root@testserver:~# apt update -y

Installeer:
root@testserver:~# apt install backuppc
The following NEW packages will be installed:
backuppc
backuppc-rsync
fontconfig
libarchive-zip-perl
libbackuppc-xs-perl
libcairo2
libdatrie1
libdbi1t64
libfile-listing-perl
libgraphite2-3
libharfbuzz0b
libpango-1.0-0
libpangocairo-1.0-0
libpangoft2-1.0-0
libpixman-1-0
librrd8t64
libsmbclient0
libthai-data
libthai0
libtime-parsedate-perl
libxcb-render0
libxcb-shm0
libxrender1
rrdtool
smbclient
0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,185 kB of archives.
After this operation, 14.1 MB of additional disk space will be used.

Do you want to continue? [Y/n]Y


Accepteer 'apache2' webserver


Noteer URL http://homeserver/backuppc/
User is 'backuppc' en noteer (tijdelijk) wachtwoord 'LBBk6xV0'

Setting up backuppc (4.4.0-8build1) ...

apache2_invoke: Enable configuration backuppc.conf
Adding password for user backuppc
...
Creating config file /etc/backuppc/config.pl with new version
Created symlink /etc/systemd/system/multi-user.target.wants/backuppc.service → /usr/lib/systemd/system/backuppc.service.

WIJZIG Backuppc wachtwoord
root@testserver:~# htpasswd /etc/backuppc/htpasswd backuppc
New password:
Zie Lastpass 'homerserver backuppc'
Re-type new password:
Updating password for user backuppc

Naar index

Wijzig poort BackupPC van 80/433 naar 81

Open BackupPC in webbrowser
Backuppc is nu geïnstalleerd en de nodige instellingen voor apache2 zijn aangebracht:
In /etc/apache2/conf-available vinden we: backuppc.conf -> /etc/backuppc/apache.conf
en in /etc/apache2/conf-enabled is aangebracht: backuppc.conf -> ../conf-available/backuppc.conf

Het bestand /etc/backuppc/apache.conf bevat de directives voor het openen van de BackupPC App in een webbrowser.
Download /etc/backuppc/apache.conf

Alias /backuppc /usr/share/backuppc/cgi-bin/

        AllowOverride None
        # Uncomment the line below to ensure that nobody can sniff important
        # info from network traffic during editing of the BackupPC config or
        # when browsing/restoring backups.
        # Requires that you have your webserver set up for SSL (https) access.
        # SSLRequireSSL

        Options ExecCGI FollowSymlinks
        AddHandler cgi-script .cgi
        DirectoryIndex index.cgi

        AuthUserFile /etc/backuppc/htpasswd
        AuthType basic
        AuthName "BackupPC admin"
    
                # Comment out this line once you have setup HTTPS and uncommented SSLRequireSSL
                # Require local 

                # This line ensures that only authenticated users may access your backups
                Require valid-user        

LET OP: Require local uitmarkeren

Met deze gemaakte instellingen zoals de Alias '/backuppc' kan de App geopend worden met de URL : http://homeserver/backuppc

Note:
Op deze manier heeft elke bezoeker van het web (poort 80 of 443) ook toegang tot BackupPC !!
Er is alleen nog een wachtwoord die ze tegenhoudt.

Open BackupPC via poort 81
Door voor BackupPC een Virtual Host te gebruiken die niet luistert op poort 80 en/of 443 is BackupPC niet meer bereikbaar via het web.

Zie ook: Wijzig poort phpMyAdmin van 80/443 naar 81

Voer de volgende stappen uit:

  1. Als er al een symbolic link naar /etc/backuppc/apache.conf gemaakt is in /etc/apache2/conf-enabled, verwijder deze dan.
    # a2disconf backuppc
    # rm /etc/apache2/conf-available/backuppc

  2. Open in /etc/apache2/sites-available het bestand 002-mysite81.conf en voeg hier een Include voor BackupPC toe:

    Listen 81
    <VirtualHost *:81
       Include /etc/phpmyadmin/apache.conf

       ErrorLog ${APACHE_LOG_DIR}/phpmyadmin.error.log
       CustomLog ${APACHE_LOG_DIR}/phpmyadmin.access.log combined
       Include /etc/backuppc/apache.conf

    </VirtualHost>


  3. Enable de site 002-mysite81.conf:

    # a2ensite 002-mysite81
    # systemctl restart apache2.service


  4. Verifiëer firewall rule:
    # ufw allow from 192.168.178.0/26 to any port 81
    dwz: open poort 81 inkomend van trusted ip's. Dus alleen toegang voor vertrouwde IP’s in het thuisnetwerk.

  5. BackupPC is nu alleen op het thuisnetwerk beschikbaar met url: http://homeserver:81/backuppc

Naar index

Backup Opslag Locatie

BackupPC slaat bij default de data op in de map '/var/lib/backuppc'.

Ten behoeve van gecentraliseerde dataopslag wordt zoals uitgewerkt in de sectie Server::Gebruikersdata Opslag een bindmount toegepast en de backups staan resulterend fysiek op locatie: /store/backup/backuppc.

Naar index

Voeg backuppc toe aan sudoers lijst

Voor commando's zoals 'rsync', 'ping', 'tar' etc heeft BackupPC root access nodig.
Om te voorkomen dat elke keer het sudo gebruiker wachtwoord gegeven moet worden voegen we gebruiker en groep 'backuppc' toe aan Sudoers

Zie ook Sudo zonder wachtwoord

Maak in de map /etc/sudoers.d een nieuw bestand 'backuppc' aan.
Edit bestand /etc/sudoers.d/backuppc en voeg toe de regels:

# Allow backuppc to run tar without a password
# backuppc ALL=NOPASSWD: /bin/tar

# ALLOW backuppc to run any command without a password
backuppc ALL=(ALL) NOPASSWD: ALL

Naar index

Voeg Admin 'ububen' toe aan groep 'backuppc'

Backuppc slaat per default alle data op in bestanden met permissies backuppc:backuppc en mod 640 bijvoorbeeld:

root@testserver:~# ls -l /vault/backuppc
total 131978168
-rw-r----- 1 backuppc backuppc  5710929972 Jan 22 03:05 benovo.4.tar.gz
-rw-r----- 1 backuppc backuppc 17459095190 Jan 20 23:45 ben-pc.10.tar.gz
-rw-r----- 1 backuppc backuppc 24063022560 Jan 14 16:33 ben-pc.3.tar.gz
-rw-r----- 1 backuppc backuppc 11446109807 Jan 21 23:11 erica.1.tar.gz

De Ubuntu Homeserver Admin is een 'non-root' gebruiker en deze Admin 'ububen' kan bovenstaande bestanden alleen lezen door via 'sudo' 'root' privileges te krijgen.

De Raspberry Backup Server laadt bovenstaande bestanden door middel van RSYNC. Hierbij wordt ingelogd als de Admin van de Ubuntu Server 'ububen'.
Nu krijgy RSYNC echter niet de benodigde leestoegang! En remote 'sudo' werkt (gelukkig) niet.

Om te zorgen dat de Admin de bestanden wel kan lezen zonder sudo voegen we Admin 'ububen' toe aan de 'backuppc' groep.
Zie ook Essentiële commando's

root@testserver:~# usermod -aG backuppc ububen

root@testserver:~# less /etc/group
...
clamav:x:113:
ububen:x:1000:
lanshare:x:1001:ububen,erica,ben,benjamin,minidlna
erica:x:1002:
ben:x:1004:
sambashare:x:988:
benjamin:x:1006:
mysql:x:114:
backuppc:x:115:ububen
minidlna:x:116:

Naar index

Basis Configuratie Instellingen

Maak zonodig gebruik van de zeer uitgebreide BackupPC Online Manual
Alle specifieke backuptaken zullen in de hierna volgende secties BackupPC Serverdata, BackupPC Netwerk PC's en BackupPC Archiveren naar Safe nader geconfigureerd worden.

De BackupPC Configuratie Parameters zijn opgeslagen in /etc/BackupPC/config.pl en voor de individuele hosts in /etc/BackupPC/pc/<hostnaam>.pl

Nu maken we alleen de globale configuratie instellingen :

  1. Open de BackupPC Administratie Console met de url: http://homeserver:81/backuppc
  2. Selecteer tab CGI en zet CgiDateFormatMMDD naar '0' en save.
    Hiermee zetten we het datumformaat van US naar International
  3. Selecteer tab Email en zet EmailUserDestDomain naar 'makkink.eu'
  4. Selecteer tab Schedule en wijzig BlackoutPeriods > weekDays naar '0, 1, 2, 3, 4, 5, 6' (alle dagen) en save
  5. Selecteer tab XFER en zet XferMethod > 'rsync'
  6. Selecteer tab Server en zet pingPath > '/bin/ping'
  7. selecteer tab Backup Settings en verwijder alle entries uit: NmbLookupCmd en NmbLookupFindHostCmd. Zet PingCmd > '/usr/local/bin/wolping -c1 -w3 $host'.
    Zie ook BackupPC configuren voor backup van de client-PC's

Verder handhaven we de default instellingen van BackupPC

Schedule
Met de default 'Schedule' instellingen wordt dagelijks een backup gemaakt beginnend met een full backup en de volgende 6 dagen een incremental. Na een week volgt dan weer opnieuw een full backup.
Het schema is zo ingesteld dat de backups van afgelopen 7 dagen bewaard worden. Full backups worden bewaars zolang er nog op deze full gebaseerde incremental backup is.

Queue
Als een host (tijdelijk) niet beschikbaar is (bijv. uitgeschakeld of buiten WiFi bereik) dan zal geen backup gemaakt worden. Als een backup niet lukt dan wordt de job in een queue geplaatst en elk uur opnieuw herstart.

Naar index

BackupPC 4.4.0-8build1 Bug patch

De versie van BackupPC in de Ubuntu Server Repository is op 09-02-2025 is nog steeds backuppc/noble,now 4.4.0-8build1 amd64 [installed]
Deze versie van BackupPC heeft een bug in het bestand /usr/share/backuppc/bin/BackupPC_backupDelete.
Dit heeft geen invloed op de werking, maar resulteert in onderstaande melding dat het printen naar het logbestand een fout bevat:

2025-02-08 17:00:06 Removing backup #0
2025-02-08 17:00:06 Old package separator used in string at /usr/share/backuppc/bin/BackupPC_backupDelete line 102.
2025-02-08 17:00:06 	(Did you mean "$Host\'s" instead?)
2025-02-08 17:00:06 BackupPC_backupDelete: removing #0

Regel 102 is: print(STDERR "BackupPC_backupDelete: Can't read $Host's config file: $error\n")

Het probleem is hier de variabele $Host gevold door 's waarbij de single quote geïnterpreteerd wordt als een package separator.
De gesuggereerde plaatsing van een escape \ direct voor de quote onderdrukt inderdaad de foutmelding maar is de variabele $Host's bestaat niet.

Het BackupPC team heeft dit 26-04-2024 correct gepatcht in BackupPC versie 4.4.0-9 : print(STDERR "BackupPC_backupDelete: Can't read ${Host}'s config file: $error\n")
Zie avoid "Old package separator used in string" warnings

Het Ubuntu Server team heeft deze upgrade echter nog niet opgenomen.
Op mijn servers heb ik daarom de patch op de hand uitgevoerd in de bestanden:
- /usr/share/backuppc/bin/BackupPC_backupDelete
- /usr/share/backuppc/bin/BackupPC_backupDuplicate
- /usr/share/backuppc/bin/BackupPC_migrateV3toV4

Naar index

BackupPC: Serverdata backup

De server (local host) is opgezet volgens de gecentraliseerde dataopslag struktuur. Op de backup flowchart is te zien dat deze opslag globaal verdeeld is in een 'live' en een 'backup' opslag.
De 'live' opslag bevat de server admin- en user-data, de netwerk fileserver-data en de webserver-data.

Dagelijkse backups van 'live' naar 'backup'
Deze sectie specificeert de configuratie van BackupPC voor het veiligstellen van de 'live' data middels dagelijkse backups naar de 'backup' opslag.

Schedule voor de individuele Hosts
In de hierna volgende host configuraties zijn op Homeserver de volgende schedules in gebruik:
ben-pc Full: 1x /week, bewaar 4
Incr.: 1x /dag, bewaar 6
Behoorlijk volume, veel activiteit, veel experimenten, met gevaar van late ontdekking
benovo Full: 1x /week, bewaar 2
Incr.: 1x /dag, bewaar 6
Beperkt volume, weinig activiteit
erica Full: 1x /week, bewaar 2
Incr.: 1x /dag, bewaar 6
Behoorlijk volume, weinig activiteit
server Full: 1x /week, bewaar 4
Incr.: 1x /dag, bewaar 6
Behoorlijk volume, veel activiteit, veel experimenten, met gevaar van late ontdekking
server-afbeeldingen Full: 1x /maand, bewaar 1
Incr.: 1x /dag, bewaar 27
Groot volume, redelijk veel activiteit
server-documenten Full: 1x /maand, bewaar 1
Incr.: 1x /dag, bewaar 27
Groot volume, redelijk veel activiteit
server-e-books Full: 1x /maand, bewaar 1
Incr.: 1x /dag, bewaar 27
Groot volume, relatief lage activiteit
server-muziek Full: 1x /maand, bewaar 1
Incr.: 1x /dag, bewaar 27
Groot volume, relatief lage activiteit
server-video Full: 2x /jaar, bewaar 1
Incr.: 1x per week, bewaar 4
Erg hoog volume, weinig activiteit
server-www Full: 1x /week, bewaar 4
Incr.: 1x /dag, bewaar 27
Behoorlijk volume, veel activiteit, veel experimenten, met gevaar van late ontdekking

Virtual Host
BackupPC is een App feitelijk bedoeld voor het maken van backups van Windows en Linux PC's naar een serverschijf, toch is het ook prima inzetbaar voor de backup van bestanden op de server zelf (Local Host).
Er moeten dan wel 'virtuele' hosts aangemaakt worden die niet bestaan op het lokale netwerk.

Het grote volume van de 'live' data wordt verdeeld over BackupPC 'hosts' die de backups op verschillende tijdstippen over de dag verdeeld uitvoeren.

Naar index

Host 'server' configuratie

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voer host 'server' in
    - Omdat op de server geen mailserver actief is heeft het geen zin om de 'user' in te voeren.
    - Save
  2. Selecteer Per-PC config: Hosts > server en daarna server > Edit Config
    - Edit Backup Settings. Omdat de bestanden waarvan we een backup wensen zich op de 'local host' bevinden is er geen 'Client Lookup' nodig.
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Edit XFer. Zet XferMethod naar: 'rsync'
    - Vink override aan van RsyncShareName en zet entry naar: /store/live
    - Vink override van BackupFilesExclude en zet entries naar: * en /webroot, * en /home/files, * en /home/wpdata en * en /home/pwgdata
    - Vink override van RsyncBackupPCPath en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Edit Schedule.
    - Vink override aan van BlackoutPeriods en zet entry hourBegin: 8 en hourEnd: 2.1 (om backup van 02:00 uur te voorkomen) en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
    - Zet FullPeriod 6.97, FullKeepCnt 4, IncrPeriod 0.7, IncrKeepCnt 6
    - BackupPC wakeup is elk uur, en daarom zal volgens bovenstaand schema de backup dagelijks om plus minus 03:00 uur gemaakt worden
  5. De configuratie wordt opgeslagen in /etc/backuppc/server.pl
  6. De backup van host 'server' wordt opgeslagen in /store/backup/backuppc/pc/server

Naar index

Host 'server-afbeeldingen' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

  1. Host: 'server-afbeeldingen'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - RsyncShareName override en zet entry naar: /store/live/home/files/afbeeldingen
    - BackupFilesExclude geen override
    - Vink override van RsyncBackupPCPath en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p (dummy entry voor rsync zonder ssh)
  4. Per-PC config Schedule.
    - Zet FullPeriod 27.95, FullKeepCnt 1, IncrPeriod 0.7, IncrKeepCnt 27
    - BlackoutPeriods override en zet hourBegin: 8 en hourEnd: 3.1 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
      Resulteert in dagelijkse backup om +/- 04:00 uur.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-afbeeldingen.pl
  6. De backup van host 'server-afbeeldingen' wordt opgeslagen op /store/backup/backuppc/pc/server-afbeeldingen

Naar index

Host 'server-documenten' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

  1. Host: 'server-documenten'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - Vink override van RsyncShareName aan en zet entry naar: /store/live/home/files/documenten
    - Vink override van BackupFilesExclude aan en zet entry: * en /Mirror-bens-pc
    - Vink override van RsyncBackupPCPath aan en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd aan en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Per-PC config Schedule.
    - Zet FullPeriod 27.95, FullKeepCnt 1, IncrPeriod 0.7, IncrKeepCnt 27
    - BlackoutPeriods override en zet hourBegin: 10 en hourEnd: 4.1 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
      Resulteert in dagelijkse backup om +/- 05:00 uur.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-documenten.pl
  6. De backup van host 'server-documenten' wordt opgeslagen op /store/backup/backuppc/pc/server-documenten

Naar index

Host 'server-e-books' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

  1. Host: 'server-e-books'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - RsyncShareName override en zet entry naar: /store/live/home/files/e-books
    - BackupFilesExclude geen override
    - Vink override van RsyncBackupPCPath aan en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd aan en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Per-PC config Schedule.
    - Zet FullPeriod 27.95, FullKeepCnt 1, IncrPeriod 0.7, IncrKeepCnt 27
    - BlackoutPeriods override en zet hourBegin: 11 en hourEnd: 5.1 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
      Resulteert in dagelijkse backup om +/- 06:00 uur.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-e-books.pl
  6. De backup van host 'server-e-books' wordt opgeslagen op /store/backup/backuppc/pc/server-e-books

Naar index

Host 'server-muziek' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

  1. Host: 'server-muziek'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - RsyncShareName override en zet entry naar: /store/live/home/files/muziek
    - BackupFilesExclude geen override
    - Vink override van RsyncBackupPCPath aan en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd aan en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Per-PC config Schedule.
    - Zet FullPeriod 27.95, FullKeepCnt 1, IncrPeriod 0.7, IncrKeepCnt 27
    - BlackoutPeriods override en zet hourBegin: 12 en hourEnd: 6.1 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
      Resulteert in dagelijkse backup om +/- 07:00 uur.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-muziek.pl
  6. De backup van host 'server-muziek' wordt opgeslagen op /store/backup/backuppc/pc/server-muziek

Naar index

Host 'server-video' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

  1. Host: 'server-video'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - RsyncShareName override en zet entry naar: /store/live/home/files/video
    - BackupFilesExclude geen override
    - Vink override van RsyncBackupPCPath aan en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd aan en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Per-PC config Schedule.
    - Zet FullPeriod 182.5, FullKeepCnt 1, IncrPeriod 6.97, IncrKeepCnt 4
    - BlackoutPeriods override en zet hourBegin: 8 en hourEnd: 1.1 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6
      Resulteert in dagelijkse backup om +/- 02:00 uur.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-video.pl
  6. De backup van host 'server-video' wordt opgeslagen op /store/backup/backuppc/pc/server-video

Naar index

Host 'server-www' configuratie

Volg de procedure als omschreven in Host 'server' configuratie.

Note: Exclude PiWiGo en Blog met alle images!

  1. Host: 'server-www'
  2. Per-PC config Backup Settings:
    - Laat NmbLookupCmd leeg als het is.
    - Laat NmbLookupFindHostCmd leeg als het is.
    - Vink override van PingCmd aan en maak veld leeg.
  3. Per-PC config XFer. Laat XferMethod als het is: 'rsync'
    - RsyncShareName override en zet entry naar: /store/live/webroot
    - BackupFilesExclude override en zet entry: * en /piwigo en * en /blog
    - Vink override van RsyncBackupPCPath aan en zet entry naar: /usr/libexec/backuppc-rsync/rsync_bpc
    - Vink override van RsyncClientCmd aan en zet entry naar: /usr/bin/rsync
    - Vink override van RsyncSshArgs en zet entry naar: /usr/bin/sudo -p
  4. Per-PC config Schedule.
    - Zet FullPeriod 6.97, FullKeepCnt 4, IncrPeriod 0.7, IncrKeepCnt 6
    - BlackoutPeriods override en zet hourBegin: 13 en hourEnd: 8 en zet entry weekDays: 0, 1, 2, 3, 4, 5, 6.
      Resulteert in dagelijkse backup om +/- 09:00 uur.
    - FullKeepCnt override en zet entry op 4. Hierdoor worden er extra Full backups bewaard zonder de bijbehoerende incrementals.
  5. De configuratie wordt opgeslagen in /etc/backuppc/server-www.pl
  6. De backup van host 'server-www' wordt opgeslagen op /store/backup/backuppc/pc/server-www

Naar index

BackupPC: Netwerk PC's backup

De testserver is opgezet volgens de ClearOS gecentraliseerde dataopslag struktuur. Op de backup-flowchart is te zien dat deze opslag globaal verdeeld is in een 'live' en een 'backup' opslag.

Backups van 'host PC's' naar 'backup'
BackupPC is een ClearOS module feitelijk bedoeld voor het maken van backups van Windows en Linux PC's naar een serverschijf.

In de default configuratie draait BackupPC elk uur en checkt van elke geconfigureerde host of de maximum tijd sinds de laatste backup verstreken is. In dat geval wordt verbinding gemaakt met de host voor het maken van de nieuwe backup. Lukt dit niet omdat de host uitgeschakeld is of een mobiele host zich buiten wifi bereik bevindt, dan wordt de poging elk uur herhaald totdat het wel lukt. Als dit op zijn beurt langer duurt dan de ingestelde maximum pogingen dan ontvangt de admin een e-mail. Wordt een in voortgang zijnde backup afgebroken dan wordt de betreffende host in een queue geplaatst en wordt elk uur geprobeerd de onderbroken backup af te maken.

De nu volgende sectie behandeld de configuratie van BackupPC voor het veiligstellen van de data op de client PC's(hosts) in het lokale netwerk middels dagelijkse backups naar de server 'backup' opslag.

BackupPC communicatie met Netwerk PC's
Voor het beschikbaar maken van de data op de client PC's moeten eerst een aantal zaken opgezet worden:

  1. HOSTS bestand (optioneel). BackupPC werkt met de hostnaam van de client-PC's die middels NetBIOS over TCP/IP vertaald wordt naar een IP. Deze 'vertaalslag' werkt beter door de client-PC's op de server op te nemen in een soort lokaal DNS bestand (/etc/hosts). Ook goed dit te doen op alle Windows PC's (c:\Windows\System32\drivers\etc\hosts).
  2. WOL met BackupPC (optioneel). Middels een zelf te schrijven script kan BackupPC een client-PC in slaapstand proberen te wekken voor een backup.
  3. RSYNCD pakket. Een op elke client-PC te installeren deamon die BackupPC na authorisatie leestoegang geeft tot de in de deamon gespecificeerde mappen en bestanden.
  4. GMail-backup. Wekelijks wordt op de Windows PC's Thunderbird gestart om de webmail accounts te synchroniseren en lokaal op te slaan.

Naar index

HOSTS bestand voor 'lokaal DNS'

BackupPC ondersteunt mobiele situaties waar bijvoorbeeld laptops slechts tijdelijk met het netwerk verbonden zijn en met dynamische IP adressen (DHCP). Hiervoor werkt BackupPC met de hostnaam van de client-PC's die middels NetBIOS over TCP/IP vertaald wordt naar een IP.
Dit is niet altijd betrouwbaar in een Windows netwerk waar de server niet dienst doet als router, i.e. netwerkbeheerder. Zie tevens How BackupPC Finds Hosts voor meer informatie.
Als dit probleem zich voordoet kan beter met vaste IP's gewerkt worden.

Vaste IP's
Op de hier beschreven homeserver wordt voor Samba access en authorisatie ook al gebruik gemaakt van vaste IP's voor trusted PC's. De toekenning van vaste IP's voor netwerkclients kan per router verschillen, maar zie voor een voorbeeld de sectie Server::Samba Beperking toegang tot 'trusted-IP's'.

Hosts bestand
Als van een hostnaam de bijbehorende IP niet gevonden wordt bij een naamserver (DNS) dan zal het systeem zoeken naar een verwijzing in het bestand /etc/hosts.

Door de BackupPC client-PC's met een vast IP op te nemen in dit hosts-bestand ('lokaal DNS') wordt snel een betrouwbare netwerk communicatie tot stand gebracht.
Als voorbeeld het /etc/hosts bestand op de mainserver:

127.0.0.1    localhost localhost.localdomain
192.168.178.4  thuisserver.makkink.eu mainserver
192.168.178.5  homeserver.makkink.eu homeserver
192.168.178.2 ben-pc
192.168.178.10 pi-nas
192.168.178.11 pi-nas
192.168.178.14 erica
192.168.178.15 benovo

Naar index

WOL met BackupPC

Als een host (client-PC) in slaapstand staat dan bestaat deze niet op het netwerk en kan BackupPC niet met deze PC communiceren.
Als van deze client-PC Wake On Lan (WOL) ingesteld is kan middels een zelf te schrijven script BackupPC de PC in slaapstand proberen te wekken voor een backup.

WOL client-PC
Het toestaan van WOL op een client-PC verschilt per PC en OS.

  1. Zoek om te beginnen in de BIOS, meestal bij Power management, en sta hier wake-up (door Magic-packet) toe. Deze optie komt niet meer voor op Dell XPS-8960.
  2. Zoek vervolgens in de BIOS naar Power Options en disable DeepSleep Control S4 en S5
  3. Ga in het Windows OS naar Configuratiescherm > Energiebeheer > In linker kolom: Het gedrag van de aan/uit-knoppen bepalen > Instellingen wijzigen die momenteel niet beschikbaar zijn > Verwijder vink bij 'Snel opstarten inschakelen'. Dus schakel snel opstarten uit!
  4. Zoek daarna in het OS bij apparaatbeheer naar de eigenschappen van de netwerkkaart en en ga in 'Configuratie' naar TAB 'Energiebeheer en vink alle drie opties aan:
    a. Dit apparaat mag de computer uit de slaapstand halen
    b. De computer mag dit apparaat uitschakelen.
    c. Alleen een Magic-pakket mag de PC wekken

Note:
WOL werkt alleen met Ether (LAN) verbindingen en niet met Wifi (WLAN)

Naar index

ETHER-WAKE
De Ubuntuserver distributie is voorzien van het etherwake programma. Dit programma genereert en verstuurd een Wake-On-LAN (WOL) 'Magic Packet' om een machine in slaaptoestand te wekken. Het enige benodigde argument is het MAC adres of een hostnaam die middels een 'ethers database' naar een MAC adres vertaald kan worden.
Zie ook # man etherwake en # man ethers.
Omdat BackupPC met de hostnaam van de client-PC's werkt moeten we alle client-PC's die we met Ether-Wake willen wekken in de 'ethers database' /etc/ethers opnemen. Creëer zonodig het ethersbestand.
Gebruik het commando # arp om een lijst te krijgen van alle machines op het lokale netwerk met de bijbehorende MAC adressen (Indien nog niet geïnstalleerd # arp install net-tools voor arp)
Als voorbeeld het /etc/ethers bestand op de mainserver:

CC:96:E5:4A:F3:02 ben-pc

Om bijv. de host 'ben-pc' te wekken volstaat nu het commando: # etherwake -i eno1 ben-pc
Etherwake gebruikt per default netwerk interface eth0. De homeserver heeft echter netwerk interface eno1

SUDO
Het commando # ether-wake moet uitgevoerd worden als root
De gebruiker 'backuppc' kan het programma 'ether-wake' wel uitvoeren middels het commando # sudo.
Om dit zonder een wachtwoord te kunnen doen moet het commando # /sbin/etherwake toegevoegd worden in het bestand /etc/sudoers aan de regel van 'backuppc'.
Edit de regel voor 'backuppc' in het bestand /etc/sudoers met het commando # visudo:

# Allows user backuppc to execute listed programs as root without password
backuppc ALL=NOPASSWD: /bin/gtar, /usr/bin/rsync, /sbin/etherwake

OF zoals op de homeserver ingesteld:

# ALLOW backuppc to run any command without a password
backuppc ALL=(ALL) NOPASSWD: ALL

Dit testen we door 'backuppc' te worden met het commando # su -s /bin/bash backuppc.
Nu kan backuppc de host 'ben-pc' wekken met het commando # sudo etherwake ben-pc

Naar index

WOLPING
Als BackupPC een hostprofiel uitvoert wordt als eerste een ping naar de host (client-PC) gestuurd. Alleen als een ping ontvangen wordt gaat de uitvoering verder.
In de BackupPC Configuratie Editor > tab Backup Settings is de default 'PingCmd' gezet op: $pingPath -c1 -w3 $host (Hierbij is $pingPath het pad /bin/ping).
Voor de host 'ben-pc' wijzigen we deze entry voor 'PingCmd' in: /usr/local/bin/wolping -c1 -w3 $host

In plaats van het gewone ping programma wordt nu het, zelf aan te maken, script 'wolping' uitgevoerd.
Het stuurt ook de ping maar als deze niet lukt wordt met ether-wake geprobeerd de host te wekken en na enige wachttijd wordt dan opnieuw een ping gestuurd.

Script WOLPING

#!/bin/bash
# ***********************************************************************
# * WOLPING voor Ubuntu Ben Makkink 11-1-2025                           *
# ***********************************************************************
# * Dit script is voor Wake On Lan middels het BackupPC ping commando   *
# * wat het eerste is wat BackupPC doet voordat het de backup start     *
# * Dit script is een vervanging dat de remote pc pingt en in het geval *
# * er geen responce komt, deze wekt middels een zgn. Magic Packet.     *
# * Na enige wachttijd wordt dan opnieuw gepingd.                       *
# * Voorwaarde is dat de PC naam en IP bekend zijn. In geval van NETBIOS*
# * problemen: de PC vermelden in /etc/hosts                            *
# * Etherwake werkt met het MAC address, zorg dus dat PC naam en de     *
# * bijbehorende MAC-address vermeld zijn in /etc/ethers                *
# * Specificeer netwerk interface als deze anders is dan 'eth0'         *
# * Voor de homeserver is dit 'eno1' dus: # etherwake -i eno1 $host     *
# ***********************************************************************

PING=/bin/ping

ARG1=$1
ARG2=$2
WAKEHOST=$3

ETHWAKE='/usr/bin/sudo /sbin/etherwake -i eno1' #thuiserver: enp34s0
SLEEPTIME=30s

logger "Backuppc pinging  $1 $2 $3"

function fwol {
        TO_WAKEUP=$1
        $ETHWAKE $1
        if [ $? -eq 0 ]
        then
           WOL_RES="OK"
        else
           WOL_RES="FAIL"
        fi
}



$PING $ARG1 $ARG2 $WAKEHOST >>/dev/null 2>&1
if [ $? -ne 0 ]; then
        fwol $WAKEHOST
        if [ "$WOL_RES" = "FAIL" ]; then
                exit 1
        fi

        sleep $SLEEPTIME

        $PING $ARG1 $ARG2 $WAKEHOST
        if [ $? -eq 0 ]
        then
           logger "success waking $WAKEHOST."
        else
           logger "unable to wake $WAKEHOST."
           exit 1
        fi
else
   $PING $ARG1 $ARG2 $WAKEHOST
fi

exit 0

Dit testen we door 'backuppc' te worden met het commando # su -s /bin/bash backuppc.
Nu kan backuppc de host 'ben-pc' wekken met het commando # wolping -c1 -w3 ben-pc

Naar index

RSYNCD installeren en configureren op client-PC's

Een deamon op elke PC
Op elke client-PC waarvan we met BackupPC middels de 'rsyncd' methode een backup willen maken moeten we het RSYNCD pakket installeren.
De package zet op een Windows PC een Linux 'rsync' deamon op waarmee BackupPC op de linux server na authorisatie toegang krijgt tot gespecificeerde Windows bestanden voor backup middels het Linux 'rsync' programma.
Hieronder, als voorbeeld, de installatie en configuratie van een Windows PC met hostnaam 'Tablet'

Configuraties uit te voeren op elke Windows PC

  1. Download de RSYNCD installer van de Sourceforge BackupPC projectpagina naar de Windows PC. Selecteer de laatste versie cygwin-rsyncd..._installer.exe.
  2. Dubbelklik op cygwin-rsyncd-x.x.x.x_installer.exe en de deamon wordt geïnstalleerd in map c:\rsyncd
  3. Edit het bestand c:\rsyncd\rsyncd.secrets met bijvoorbeeld Kladblok.
    Voeg een nieuwe lijn toe met formaat: gebruikersnaam:wachtwoord (Meerdere regels met gebruikersnaam en wachtwoord is mogelijk).
    Voeg na de laatste gebruiker een nieuwe lege lijn toe.
    Klik hier voor een voorbeeld van een rsyncd.secrets bestand.
    De gebruikersnaam en wachtwoord zal BackupPC later gebruiken om zich te authentiseren.
  4. Maak in c:\rsyncd een batchbestand genaamd 'backuppc-win10-firewall-testserver.bat' met onderstaande inhoud:
    rem backuppc-win7_8_10-firewall.bat - Install firewall rules for rsycnd on Win 7, 8 or 10
    
    set REMOTE=192.168.178.5,LocalSubnet
    netsh advfirewall firewall add rule name="RSync Program" dir=in action=allow program="C:\rsyncd\rsync.exe" enable=yes remoteip=%REMOTE% profile=domain
    netsh advfirewall firewall add rule name="RSync Related Port" dir=in action=allow protocol=TCP localport=873
    netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
    pause
    Geef bij REMOTE het IP-adres van de server met BackupPC, in dit geval de testserver op 192.168.178.5
    Installeer de firewall rules voor rsyncd door het bestand als ADMINISTRATOR eenmalig uit te voeren.
  5. Edit het bestand c:\rsyncd\rsyncd.conf
    Maak eerst een backup-kopie en noem het 'rsyncd.origineel.conf'
    Breng wijzigingen aan en maak shares (zie gele highlights):
# 
# A sample rsyncd.conf file usable with BackupPC. This file does not
# completely document all of the settings for rsyncd.conf - see the
# man page that comes with the rsync ditribution for a comprehensive
# overview off all available settings.
#

#
# Allow rsync to change the root directory to the module location
# upon connection of a client. This is disabled for Win32 as we do
# not provide a full Cygwin environment.
#
# Warning: with a setting of "false", absolute symlinks will be
# stripped of their leading "/".  See "use chroot" in the rsyncd.conf
# man page.  This is relevant for machines that support symlinks
# (WinXX machines do not).
#
use chroot = false

#
# Limit the simultaneous rsync connections to 4. Changing
# this to '1' should be sufficient for BackupPC.
# Houden we op '2' zodat eventueel homeserver en testserver tegelijk bedient kunnen worden
#
max connections = 2

#
# Uncomment this line and change the path if
# you would like to log rsync messages.
#
# log file = c:/rsyncd/rsyncd.log

#
# The location of the rsync process ID file
#  Not good to have if your system is not cleanly shut down each time.
#  Disabling.  -RSF
# pid file = c:/rsyncd/rsyncd.pid

#
# The locations of the rsync lock file
# 
lock file = c:/rsyncd/rsyncd.lock

#
# This is where we define the rsyncd modules. Add as many directories or
# files are you wish.  
#
# Voorbeeld voor het 'sharen' van d:\Data. Voor BackupPC is "Data" de
# naam van de share (m.a.w. de waarde van $Conf(RsyncShareName) in de
# BackupPC settings op de server voor deze client (host).
#

[Data]
    path = /cygdrive/d/Data
    comment = Data
    strict modes = false
    # Limit this share to just these users (needs to match $Conf{RsyncdUserName}
    # and the c:/rsyncd/rsyncd.secrets files)
    auth users = backuprsyncd
    # Password to match $Conf(RsyncdPasswd)
    secrets file = c:/rsyncd/rsyncd.secrets
    # List the IP address(es) of your BackupPC server(s), so only connections from these hosts will be allowed.
    hosts allow = 192.168.1.5, 192.168.1.4
    # Do not allow restores to write to this share, select option download in zip instead
    read only = true
    list = false

# Maak aanvullend de nodige shares aan

[AppData]
    path = /cygdrive/c/Users/Ben/AppData/Roaming
    comment = AppData
    strict modes = false
    auth users = backuprsyncd
    secrets file = c:/rsyncd/rsyncd.secrets
    hosts allow = 192.168.1.5, 192.168.1.4
    read only = true
    list = false

[Drivers]
    path = /cygdrive/c/Drivers
    comment = Drivers
    strict modes = false
    auth users = backuprsyncd
    secrets file = c:/rsyncd/rsyncd.secrets
    hosts allow = 192.168.178.5, 192.168.178.4
    read only = true
    list = false

[Images]
	path = /cygdrive/d/Images
	comment = Images Ben-pc
    strict modes = false
    # Limit this share to just the Raspberry RSync user
    # and the c:/rsyncd/rsyncd.secrets files)
    auth users = backuprsyncd
    # Password sshpass -f ~/.rsync_pass_ben-pc to match 
    secrets file = c:/rsyncd/rsyncd.secrets
    # List the IP address(es) of your Raspberry Backupserver, so only connections from these hosts will be allowed.
    hosts allow = 192.168.178.10, 192.168.178.11
    # Do not allow restores to write to this share, select option download in zip instead
    read only = true
    list = false

NOTE: Het laatste blok [Images] wordt niet door Backuppc gebruikt maar hiermee lift de Raspberry Backupserver mee door het gebruik van de Rsync Daemon op de PC

Test RSYNCD installatie

Na de configuratie van RSYNCD op de client PC is het raadzaam deze te testen. Geef hiertoe van de Linux server het volgende commando:
Bovenstaande configuratie is toegepast op de client-PC 'ben-pc' met IP 192.168.1.2 en als we de share 'Drivers' kiezen om te kopieren naar /tmp dan is het commando:
# rsync -av backuprsyncd@192.168.178.2::Drivers /home/ben/tmp
Als we het commando uitvoeren zal het wachtwoord van 'backuprsyncd' gevraagd worden, geef het wachtwoord dat ingevoerd is in het bestand c:\rsyncd\rsyncd.secrets
Maak na de tijd op de server wel weer de map /tmp leeg.

Als de test met de eerste client-PC werkt volgen we bovenstaande procedures voor alle PC's op het netwerk waarvan we de gebruikersdata veilig wensen te stellen met BackupPC

Naar index

GMail local backup met Thunderbird

Thunderbird GMail synchronisatie
Wekelijks wordt op de Windows PC's 'ben-pc' en 'erica' Thunderbird gestart om de respectievelijke webmail accounts (gmail) te synchroniseren en lokaal op te slaan.

Installeer Thunderbird op PC's als volgt:

E-mail Synchronisatie

  1. Download (https://www.thunderbird.net/nl/) en installeer Thunderbird (niet als de 'standaard' e-mail toepassing)
  2. Start de toepassing en stel bestaande e-mail account in (bijv Gmail account ben@makkink.eu) met wachtwoord onthouden.
    Volg de wizzard voor configuratie met automatische instellingen.
    Sla integratie over.
  3. Synchroniseer de e-mail de 1e keer door de map ‘Alle e-mail' te selecteren.
    Zorg dat deze map geopend is voordat Thunderbird afgesloten wordt. Hierdoor zal Thunderbird de volgende keer automatisch openen met deze map (en dus alle mail synchroniseren.

Agenda Synchronisatie

  1. Geef Thunderbird-menu weer (drie streepjes rechts in scherm):
  2. Selecteer Add-ons > Extensies. Verifieer dat al geïntegreerde add-on ‘Lightning’ ingeschakeld is.
  3. Selecteer in Add-ons > Extensies het zoekvak en type: ‘Provider for Google Calendar’, selecteer en installeer ‘Provider for Google Calendar’
  4. Na herstart van Thunderbird:
    * Ga naar het menu van Thunderbird en selecteer Nieuw Bericht. Selecteer Agenda in het submenu.
    * Selecteer, zodra de wizard wordt geopend: ‘Op het netwerk’ en klik op Volgende.
    * Kies Google Agenda en klik op Volgende. Voer e-mailadres van Google in en klik op Volgende.
  5. Als hierom wordt gevraagd, voer dan uw Gmail-accountdetails in en geef de Provider for Google Calendar-add-on toestemming om uw agenda’s te beheren.
  6. Kies de agenda’s die u in Thunderbird wilt gebruiken. In ieder geval ‘ben@makkink.eu’
  7. Klik op Volgende. Er is een bevestiging dat de agenda is aangemaakt. Klik op Voltooien en klik op ‘synchroniseren’.

Naar index

Contacten Synchronisatie met TbSync

  1. Geef Thunderbird-menu weer (drie streepjes rechts in scherm):
  2. Selecteer Add-ons > Extensies en selecteer zoekvak en type: ‘TbSync’
    Selecteer en installeer ‘TbSync’.
  3. Selecteer Add-ons > Extensies en selecteer zoekvak en type: 'Google-4-TbSync'
    Selecteer en installeer 'Google-4-TbSync'
  4. Open Thunderbird > Extra > Add-ons & thema's: Klik op Add-on 'TbSync' en vervolgens op de steeksleutel
    Het volgende scherm opent:



    Selecteer: Account actions > Add new account > Google's People API

    Naar index

  5. Voer details van Client-account in.

    1. Vul als naam in bijvoorbeeld: Makkink-TBSync.
    2. Credentials:
         Zie Exploring Linux::Projecten > Google Client Console voor Thunderbird voor het creëren van de benodigde Google ClientID en Client Secret.
         In geval de credentials al eerder aangemaakt zijn, zie Exploring Linux::Projecten > Credentials opnieuw downloaden van Google Console




    Klik na invullen op voltooien.
     
  6. Terug in het TbSync Accountmanager scherm:
    !. Vink aan Enable and Synchronize this account
    2. Vink aan 'available resources'
    3. Set Synchronisatie op 1 minuut
    4. Klik 'Synchronize now' en het Thunderbird Adresboek wordt gesynchroniseerd met Google Contacts


Naar index

Overige Instellingen:
Ga naar Thunderbird Menu (3 streepjes) > Account instellingen.
Ga door alle tabs en verwijder vinkjes voor opties zoals meldingen en andere zaken die voor onze backup functie niet zinnig zijn.
Vink aan in tab 'Serverinstellingen': Op nieuwe berichten controleren bij opstarten.
Vink aan in tab 'Synchronisatie & opslag': Berichten voor alle mappen voor deze account op deze computer bewaren

Ga naar Thunderbird Menu (3 streepjes) > Instellingen > Algemeen en verwijder vinkje bij 'Wanneer thunderbird start, de startpagina in het berichtgedeelte tonen.
Ga ook onder Opties door alle tabbladen en verwijder zomogelijk alle vinkjes.

Schedulen van backups
Plaats map homeserver\documenten\Software\Thunderbird-Backup in C:\Program Files (x86)\
Maak in Windows taakbeheer een entry voor het wekelijks starten van Thunderbird met het DOS batchbestand

C:\Program Files (x86)\Thunderbird-Backup\Thunderbird-Backup.bat
@Echo off
Start Thunderbird.exe

echo "Dit bestand start Thunderbird voor het Syncen van de GMailaccount."
echo "Daarna volgt er een timeout zodat Thunderbird de synchronisatie afrond"
echo 'Vervolgens wordt Thunderbird gesloten. Om een sharing violation te voorkomen'
echo 'lassen we opnieuw een timeout in voordat de Thunderbird data'
echo 'gekopieerd worden naar Thunderbird-BackupData op de d:\Data drive'

timeout 300
TASKKILL /F /IM Thunderbird.exe
timeout 60

xcopy /y /e %USERPROFILE%\AppData\Roaming\Thunderbird\Profiles d:\Data\Documenten\Thunderbird-BackupData

Alle Thunderbird data worden opgeslagen in het Thunderbird-profiel ..\AppData\Roaming\Thunderbird\Profiles\<xxxxxxxx>.default.
Deze resulterende profielbestanden zijn gelockt als Thunderbird open staat, daarom wordt na de synchronisatie Thunderbird weer afgesloten en de bestanden in ..\AppData\Roaming\Thunderbird\Profiles gekopieerd naar d:\Data\Documenten\Thunderbird-BackupData waar ze beschibaar zijn voor BackupPC voor lokale backup.

Naar index

Thunderbird Backup en Restore

Backup
In Thunderbird onder Windows is dat feitelijk slechts het kopiëren van een map. C:\Users\{gebruikersnaam}\AppData\Roaming\Thunderbird\Profiles\, gevolgd door een willekeurige naam xxxx.default.
Het is precies déze map die je moet kopiëren om in één klap al je mail, instellingen, adresboeken enzovoorts te back-uppen.

Restore
Gaat er iets gruwelijk mis met je systeem en moest dit opnieuw geïnstalleerd worden, dan help je Thunderbird snel weer op weg.

Installeer het programma en maak een tijdelijke (al dan niet fake) mailaccount aan bij de eerste start van het programma.
Dat is nodig, omdat de net genoemde map met de random naam bij een nieuwe installatie van Thunderbird anders heet.
Sluit Thunderbird en blader met de Verkenner naar de nieuwe Profiles-map. Open de map met de extensie .default en verwijder alle daarin aanwezige bestanden.
Open vervolgens de xxxxx.default-map die je als back-up bewaard hebt. Kopieer álle bestanden uit die map naar de nieuwe .default-map op de c-schijf.
Als je daarna Thunderbird start werkt alles direct.

Als het Thunderbird programma nog goed werkt of door een image is teruggezet (met mogelijk oudere data) dan kun je de aanwezige xxxxx.default-map compleet verwijderen en door de backup vervangen.

Restore met Google MBOX Export

Om ruimte te besparen is er de optie een gedeelte van de GMail te exporten als een MBOX bestand, zoals door mij gedaan voor alle mail van de VvE.

Zie voor Google e-mail te exporteren naar een lokale map: GMail exporteren naar PC

Zie voor het in Thunderbird importeren gearchiveerde e-mail in een MBOX bestand: How to Open an MBOX File (Using Mozilla Thunderbird)

Naar index

BackupPC configuren voor backup van de client-PC's

Voor iedere client-PC waarop RSYNCD geïnstalleerd is maken we in BackupPC een host aan met configuratie voor de backups.
Hieronder de instellingen van de client-PC's op het netwerk van de testserver zijnde 'ben-pc, 'erica', en 'benovo'.

Naar index

Host 'ben-pc' configuratie

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voer host 'ben-pc' in
    - Omdat op de server geen mailserver actief is heeft het geen zin om de 'user' in te voeren.
    - Save
  2. Selecteer Per-PC config: Hosts > 'ben-pc' en daarna 'ben-pc' > Edit Config
    - Edit Backup Settings.
    - Maak NmbLookupCmd leeg.
    - Maak NmbLookupFindHostCmd leeg.
    - Maak PingCmd als de default entry: /usr/local/bin/wolping -c1 -w3 $host
    - Het script 'wolping' voert de 'ping' uit en als dit niet lukt wordt door een WOL geprobeerd de client-PC te wekken. Zie hiervoor sectie WOL met BackupPC
    - Save
  3. Edit XFer.
    - Zet XferMethod: 'rsyncd'
    - Vink override aan van RsyncShareName en zet entries naar: Data, AppData en Drivers.
       We laten de share Images weg omdat dit een te groot volume genereert. We maken regelmatig op de hand een copie naar de externe images schijf.
    - Maak RsyncdUsername: backuprsyncd
    - Maak
    RsyncdPasswd als ingevoerd in het bestand c:\rsyncd\rsyncd.secrets
    - Vink override van BackupFilesExclude en zet ShareName naar: AppData met entries: *.lock, /Dropbox, /Microsoft/Windows/Cookies en /Microsoft/Windows/Recent
    - Save
  4. Edit Schedule.
    - Vink override aan van IncrPeriod en zet entry naar: 0,7 Hierdoor zal BackupPC proberen een backup te maken onmiddelijk na de BlackoutPeriod
    - Vink overrides aan en zet FullPeriod 6.97, FullKeepCnt 4, IncrPeriod 0.7, IncrKeepCnt 6
    - Vink override aan van BlackoutPeriods en zet entry hourBegin: 1 en hourEnd: 22.5
    - BackupPC wakeup is elk uur, en daarom zal volgens bovenstaand schema de backup dagelijks om plus minus 23:00 uur gemaakt worden.
  5. De configuratie wordt opgeslagen in /etc/backuppc/ben-pc.pl
  6. De backup van host 'ben-pc' wordt opgeslagen op /store/backup/backuppc/pc/ben-pc

Naar index

Host 'erica' configuratie

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voeg bij Hosts een nieuwe host toe met: 'erica=ben-pc'Als we dit saven wordt de complete configuratie van 'ben-pc' gekopieerd
    - Save
  2. Selecteer Per-PC config: Hosts > 'erica' en daarna 'erica' > Edit Config
    - Edit Backup Settings.
    - Laat NmbLookupCmd leeg.
    - Laat NmbLookupFindHostCmd leeg.
    - Maak PingCmd als de default entry: /bin/ping -c1 -w3 $host
       Wolping werkt niet via wifi
    - Save
  3. XFer Settings: 'erica' heeft dezelfde shares als 'ben-pc', dus:
    - Override van BackupFilesExclude en ShareName: AppData met entries: *.lock, /Dropbox, /Microsoft/Windows/Cookies en /Microsoft/Windows/Recent
  4. Schedule Settings:
    - Hier wijzigen we ten opzichte van 'ben-pc' alleen de instelling voor BlackoutPeriods om de backup-workload wat te verdelen.
    - Vink override aan van FullKeepCnt en zet entry op 2. Hierdoor wordt er een extra Full backup bewaard zonder de bijbehoerende incrementals.
    - Vink override aan van BlackoutPeriods en zet entry hourBegin: 18 en hourEnd: 6.75
    - BackupPC wakeup is elk uur, en daarom zal volgens bovenstaand schema de backup dagelijks om plus minus 07:00 uur gemaakt worden.
  5. De configuratie wordt opgeslagen in /etc/backuppc/erica.pl
  6. De backup van host 'erica' wordt opgeslagen op /store/backup/backuppc/pc/erica

Naar index

Host 'tablet' configuratie

Niet meer in gebruik. Alleen als voorbeeld

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voeg bij Hosts een nieuwe host toe met: 'tablet=ben-pc'Als we dit saven wordt de complete configuratie van 'ben-xps' gekopieerd
    - Save
  2. Selecteer Per-PC config: Hosts > 'tablet' en daarna 'tablet' > Edit Config
    Backup Settings: De instellingen van 'ben-xps' zijn ook correct voor 'tablet', dus hier wijzigen we niets
  3. XFer Settings: 'tablet' heeft dezelfde shares als 'ben-pc''. Bij BackupFilesExclude voegen we toe AppData/NVIDIA
  4. Schedule Settings:
    - Hier wijzigen we ten opzichte van 'ben-pc' alleen de instelling voor BlackoutPeriods om de backup-workload wat te verdelen.
    - Vink override aan van BlackoutPeriods en zet entry hourBegin: 22 en hourEnd: 7.5
    - BackupPC wakeup is elk uur, en daarom zal volgens bovenstaand schema de backup dagelijks om plus minus 08:00 uur gemaakt worden.
  5. De configuratie wordt opgeslagen in /etc/backuppc/tablet.pl
  6. De backup van host 'tablet' wordt opgeslagen op /store/backup/backuppc/pc/tablet

Naar index

Host 'benovo' configuratie

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voeg bij Hosts een nieuwe host toe met: 'benovo=erica'Als we dit saven wordt de complete configuratie van 'erica' gekopieerd
    - Save
  2. Selecteer Per-PC config: Hosts > 'benovo' en daarna 'benovo' > Edit Config
    Backup Settings: De instellingen van 'erica' zijn ook correct voor 'benovo', dus hier wijzigen we niets
  3. XFer Settings: 'benovo' heeft de zelfde shares als 'erica', dus:
    Vink override van BackupFilesExclude en zet ShareName naar: AppData met entries: *.lock, /Dropbox, /Microsoft/Windows/Cookies en /Microsoft/Windows/Recent
    maar aanvullend ook:
    - ShareName: Data met entry: /Documenten/Mirror-bens-pc .
  4. Schedule Settings:
    - Hier wijzigen we ten opzichte van 'erica' alleen de instelling voor BlackoutPeriods om de backup-workload wat te verdelen.
    - Vink override aan van FullKeepCnt en zet entry op 2. Hierdoor wordt er een extra Full backup bewaard zonder de bijbehoerende incrementals.
    - Vink override aan van BlackoutPeriods en zet entry hourBegin: 18 en hourEnd: 8.75
    - BackupPC wakeup is elk uur, en daarom zal volgens bovenstaand schema de backup dagelijks om plus minus 09:00 uur gemaakt worden.
  5. De configuratie wordt opgeslagen in /etc/backuppc/benovo.pl
  6. De backup van host 'benovo' wordt opgeslagen op /store/backup/backuppc/pc/benovo

Naar index

Backupschema van een Host stopzetten.

Als van één of meerdere Hosts (tijdelijk) geen backups gemaakt moeten worden, kunnen we dit in het schedule regelen zonder dat we een Host en/of de configuratie verwijderen.
Dit doen we eenvoudig met het instellen van een Blackout in de Schedule sectie.

Klik op de link van BackupDisable voor onderstaande informatie

$Conf{BackupsDisable} = 0;

    Disable all full and incremental backups. These settings are useful
    for a client that is no longer being backed up (eg: a retired machine),
    but you wish to keep the last backups available for browsing or
    restoring to other machines.

    There are three values for $Conf{BackupsDisable}:

      0    Backups are enabled.

      1    Don't do any regular backups on this client.  Manually
           requested backups (via the CGI interface) will still occur.

      2    Don't do any backups on this client.  Manually requested
           backups (via the CGI interface) will be ignored.

Naar index

Testserver BackupPC schedule niet uitvoeren

Op de testserver is BackupPC volledig geinstalleerd en geconfigureerd, maar we willen dat er geen backups gemaakt worden.
Als eerste worden alle 'archivaris' commando's in crontab uitgemarkeerd.
Ten tweede zetten we zoals hierboven uitgelegd $Conf{BackupsDisable} naar 1.

Dit doen we niet voor elke host individueel maar in BackupPC > Server > Edit Config > Schedule > $Conf{BackupsDisable} = 1
Hiermee wordt de default $Conf{BackupsDisable} van alle hosts naar 1 gezet.
Check wel dat voor de individuele host er geen override op $Conf{BackupsDisable} ingesteld is.

Naar index

BackupPC: Backups Archiveren naar Vault

Zoals uiteengezet in Server layout en backup strategie is de opslag van de Homeserver ingedeeld volgens de 3-2-1 regel.

De schijfopslag op de Ubuntu Homeserver is als volgt verdeeld:

  1. SDA met sda1 /boot/efi partitie en sda2 met het Ubuntu Server OS
  2. SDB met 'Live' gebruikersdata van Fileserver en Webserver)

    3 Backups, 2 gescheiden drives en 1 gescheiden locatie.

  1. Backup 1:
    SDC
    met 'Backup' van SDA en SDB en netwerk PC's
  2. Backup 2:
    SDD
    met 'Vault' met backup van SDC
  3. Backup 3:
    De backupdata op SDD worden uiteindelijk regelmatig weggeschreven naar een 'air-gapped' Backup Server

Onderstaande BackupPC backups Archiveren van Backup 1 naar Backup 2 (/Vault)

Archiveren
BackupPC ondersteunt het archiveren naar andere media, maar ook naar een fysiek gescheiden serverschijf. Backup maakt een archief aan van de meest recente backup van elke gespecificeerde host.
Met BackupPC kan helaas geen archivering gescheduled worden, er moeten elke keer op de hand één of meerdere te archiveren hosts geselecteerd worden.
Dit kan alleen opgelost worden door de archivering te starten uit een script dat uitgevoerd wordt via een cron.

archiveHost 'archivaris' Configureren

Om een archiveHost te configuren in BackupPC voegen we in het Hosts bestand een nieuwe host toe met een duidelijke naam

  1. Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
    - Voeg bij Hosts een nieuwe host toe: 'archivaris' en Save
  2. Selecteer Per-PC config: Hosts > 'archivaris' en daarna 'archivaris' > Edit Config
    - Edit Backup Settings.
    - Vink override aan en verwijder de default enties van: NmbLookupCmd , NmbLookupFindHostCmd en PingCmd
    - Save
  3. Edit XFer.
    - Vink override aan van XferMethod en zet entry naar: 'archive'
    - Vink override aan van ArchiveDest en zet entry naar: '/vault/backuppc'.
       Deze directory moeten we zelf nog aanmaken! Zie punt 7.
    - Save
  4. De rest van de defaultinstellingen van host 'archivaris' kunnen gelaten worden voor wat ze zijn.
  5. De configuratie wordt opgeslagen in /etc/backuppc/archivaris.pl
  6. De aangemaakte hostmap voor archivaris is : /store/backup/backuppc/pc/archivaris, chown backuppc:backuppc en chmod 750
  7. Maak bestemmingsmap /vault/backuppc, chown backuppc:root en chmod 750

Test de instellingen van de nieuw geconfigureerde host en selecteer in archivaris Home : 'Start Archive'.
Selecteer van de nu gepresenteerde lijst één of meerdere host(s) om een archief van te maken.
Deze laatste noodzakelijke actie is ook de reden dat een schedule geen zin heeft voor het maken van archieven. De CGI biedt hiertoe geen mogelijkheden.

Naar index

archiveHost schedulen met script en cron

Het maken van een archief (als tarball) van een recente met BackupPC gemaakte backup kan ook met een shell commando.
Het te geven commando is: # BackupPC_archiveStart archiveHost userName hosts...
Hierin is host 'archivaris' de archiveHost, userName de eigenaar van het verzoek: 'root' en hosts... één of meerdere BackupPC hostnamen waarvan een archief gemaakt moet worden.
Dit maakt een archief aan van de meest recente backup van elke gespecificeerde host.

Bovenstaand commando nemen we op in een zelf te maken script 'archiveer-host' dat middels een cron op gezette tijden uitgevoerd wordt
Klik hier voor het bekijken of downloaden van onderstaand script:

archiveer-host
!/bin/bash
#***************************************************************************************
#* ARCHIVEER-HOST  Ben Makkink 19-07-2024                                              *
#* Script om met BackkupPC een archief (tarball) te maken van een Host RSYNC Backup    *
#* Dit script bevat het on-line commando voor het schedulen met een CRON               *
#***************************************************************************************
# In BackupPC is een host 'archivaris' geconfigureerd. Deze host kan een archief
# (tarball) aanmaken van de laatste backup van een andere (rsyncd/rsync) host. Van host
# 'archivaris' is ArchiveDest gezet naar /vault/backuppc.
# Deze map is chown backkuppc:root en chmod 750.
# Het starten van een archivering kan in BackkupPC helaas niet gescheduled worden, maar
# wel met een commandline in dit script en een cron.
#
# De commandline syntax is:
# # BackupPC_archiveStart archiveHost userName hosts...
#
# Hierin is archiveHost 'archivaris' en userName de naam van de aanvrager: 'root'
# Voor hosts... vullen we de gewenste te archiveren host in.
# BackupPC draait niet in een shell, dus het is noodzakelijk dat de volledige 'paths'
# gebruikt worden
#***************************************************************************************
#
arch_host=$1
del_host="/vault/backuppc/"$arch_host".*"

# Bewaar alleen de laatste tarballs van elke $arch_host
# Bewaar 3: tail -n +4
# Bewaar 2: tail -n +3
# Bewaar 1: tail -n +2

ls -t $del_host | tail -n +3 |xargs rm -f --;

# Voer het archiverings-commando uit als BackupPC-user 'backuppc'
sudo -u backuppc /usr/share/BackupPC/bin/BackupPC_archiveStart archivaris root $arch_host;

# Crons voor elke individuele host zullen dit script wekelijks uitvoeren met het
# commando : archiveer-host  Waarbij  de naam van de te archiveren host is


Schedule met CRON
De cron-taken zijn uitgesmeerd over de hele week en in de nachturen om een goede server performance tijdens de piekuren te bevorderen. Zie de tabel Distributie Werkbelasting Serveronderhoud

0 3 * * 0 /usr/local/bin/archiveer-host server-www &> /dev/null elke zondag 03:00
0 23 * * 0 /usr/local/bin/archiveer-host server-documenten &> /dev/null elke zondag 23:00
30 23 * * 1 /usr/local/bin/archiveer-host ben-pc &> /dev/null elke maandag 23:00
0 23 * * 2 /usr/local/bin/archiveer-host erica &> /dev/null elke dinsdag 23:00
0 3 * * 3 /usr/local/bin/archiveer-host benovo &> /dev/null elke woensdag 03:00
0 23 * * 4 /usr/local/bin/archiveer-host server-e-books &> /dev/null elke donderdag 23:00
0 23 * * 5 /usr/local/bin/archiveer-host server &> /dev/null elke vrijdag 23:00
0 23 * * 6 /usr/local/bin/archiveer-host server-muziek &> /dev/null elke zaterdag 23:00

Hosts server-afbeeldingen en server-videos overslaan

  1. De backup van host 'Server-afbeeldingen' wordt hier niet gearchiveerd. Dezelfde afbeeldingen worden in Piwigo geladen en van Piwigo, compleet met de afbeeldingen en derivaten, wordt met het script 'backuppwg' dagelijks een backup gemaakt naar het fysiek gescheiden Logical Volume 'vault' in de map /vault/piwigo. Zie hiervoor Piwigo::Backup sectie Script Backuppwg-cron
  2. De backup van host 'Server-videos' wordt niet gearchiveerd vooral vanwege het grote volume. De videos zijn 'gratis' van het internet en er is geen man overboord als deze bij een harddisk crash verloren gaan.

Naar index

Archief naar Externe Schijf

Tot nu toe staan alle backups en archieven op fysiek gescheiden schijven maar nog steeds op de zelfde machine.
Zie hiervoor Backup naar Raspberry Pi Backup-Server

Indien gewenst kan er een backup naar een externe USB-disk geschreven worden.

De procedure is geen hoogstandje en wordt aan de commandprompt uitgevoerd.

  1. Sluit USB-disk aan op de server. De drive wordt herkend, controleer dit en stel de device (/dev/) vast met # dmesg of # fdisk -l, bijvoorbeeld /dev/sdd
  2. Als de drive nog niet gepartitioneerd en geformatteerd is doe dit dan met commando # fdisk /dev/sdd en maak nwe partitie sdd1.
    Formatteer deze partitie met commando # mkfs -t ext4 /dev/sdd1
  3. Maak een mountpoint: # mkdir /mnt/usb
  4. Mount sdd1: # mount -t ext4 /dev/sdd1 /mnt/usb
  5. Synchroniseer externe schijf met het archief /vault (exlude de opgeslagen pc-images en map backuppc in /vault:
    # rsync -avzh --exclude pc-images --exclude backuppc --delete /vault /mnt/usb
  6. Verwijder oude backuppc bestanden van externe schijf
    # rm -rf /mnt/usb/vault/backuppc/*.tar.gz
  7. Ga naar map /mnt/usb/vault/backuppc/
    # cd /mnt/usb/vault/backuppc/
  8. Kopieer op de hand laatste goede tarballs uit /vault/backuppc naar de externe HDD
    # cp -a /vault/backuppc/asrock.999.tar.gz .
    # cp -a /vault/backuppc/ben-xps.999.tar.gz
    .
    etc.

Naar index

BackupPC migreren naar andere server

Voor het verhuizen van BackupPC naar een andere server zijn de volgende stappen te doen:

  1. Installeer en activeer BackupPC op de nieuwe server
  2. Kopieer al de configuratie bestanden /etc/BackupPC/* van oude pc naar /etc/backuppc op de nieuwe server
  3. Kopieer al de backupdata bestanden /var/lib/BackupPC/* (/store/backup/backuppc/* ) van oude naar nieuwe server.
    Zie sectie Backup Opslag Locatie voor de actuele opslaglocatie (bind)

Naar index

Backup naar Raspberry Pi Backup-Server

Alle voorgaande backups bevinden zich op één en dezelfde locatie. Het is veiliger als er ook kopiën op een andere off-line locatie bewaard worden. Hiervoor maakte ik gebruik van de toennog gratis TransIP online opslag STACK met een capaciteit van 1000 GB.

In 2024 heb ik een Backup-Server opgezet op een 'air-gapped' Raspberry Pi 4B met een externe USB-SSD van 4TB.
De Backup-Server staat normaal uit en start op vaste tijden aan en uit middels een Hue stopcontact met timer.
Als de Backup-Server gestart is, wordt middels een cron een backup gestart.

Als eerste wordt getracht vast te stellen dat de bron niet geransomd is.
Dan pas wordt de externe USB-SSD gemount en d.m.v. rsync de mainswerver-backup gemaakt (opgehaald).

Zie voor details Exploring Linux RaspBerry Pi Backup-Server

Naar index