Server::Backup en Restore
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:
- Het "per ongeluk" weggooien of beschadigen van een bestand door de gebruiker kan ondervangen worden door simpelweg een kopie van belangrijke bestanden te maken op dezelfde schijf.
- Het kapotgaan van de harde schijf kan ondervangen worden door een back-up op extra harde schijf te maken of door een RAID-configuratie te gebruiken.
- Diefstal van een computer of gegevensdrager kan ondervangen worden door de back-up op een extern medium te maken.
- Een grote brand, overstroming of andere calamiteit kan ondervangen worden door de back-up op een andere locatie te bewaren.
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.
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:
- Een volledige back-up per periode. De lengte van de periode kan afhangen van de hoeveelheid gegevens, de mate waarin deze veranderen en de capaciteit van het gebruikte back-up-medium. Meestal is deze periode een week, soms twee weken of een maand. Deze back-ups worden om archiefredenen in het algemeen langer bewaard, ook al is er een nieuwere volledige back-up gemaakt.
- Een incrementele back-up per dag. In deze back-up worden alleen die bestanden opgeslagen die sinds de vorige volledige of incrementele back-up zijn veranderd. Om een volledige bestandsmap terug te plaatsen zijn de laatste volledige back-up, en alle daar op volgende incrementele back-ups nodig.
- Een progressieve back-up, ook wel "incremental forever back-up method" genoemd. Dit is een variant op incrementele back-up waarbij de eerste incrementele back-up natuurlijk een volledige back-up is. Vervolgens worden alleen nog maar incrementele back-ups gemaakt. Om een volledige bestandsmap terug te plaatsen zijn geen verschillende back-ups nodig, in plaats daarvan bouwt de back-upserver een lijst van terug te zetten bestanden die vervolgens vanuit de opslag naar de client worden gestuurd.
- In plaats van een incrementele back-up kan ook een differentiële back-up gemaakt worden. Hierbij worden steeds alle bestanden opgeslagen die sinds de laatste volledige back-up zijn veranderd. Om een volledige bestandsmap terug te plaatsen zijn de laatste volledige back-up en de laatste differentiële back-up nodig.
Ook het simpelweg kopiëren van belangrijke files is een vorm van back-up, die in bepaalde situaties effectief kan zijn.
Server layout en backup strategie
Vanaf ClearOS 6 recommendeert ClearOS het centraliseren van gebruikersdata. Dit helpt niet alleen met opslagbeheer, maar vereenvoudigt ook backupbeheer.
Zie Server::Gebruikersdata Opslag voor de hiertoe aanbevolen structuur.
De schijfopslag op mijn ClearOS server is in lijn met de ClearOS aanbevelingen globaal verdeeld over 4 blokken:
- Volume Group 'main' met het Operating Systeem (OS)
- Volume Group 'datalive' met subsectie (LV) 'live' bevattend:
-server administrator homedata en archieven
-fileserver voor lokaal netwerk
-webserver inclusief PiWiGo imagebeheer en presentatie - Volume Group 'databck' met subsectie (LV) 'backup' bevattend:
-backups (tarballs) van systeem-configuratie
-progressieve backups (bestandsniveau) van bovenstaand data-live blok
-progressieve backups (bestandsniveau) van netwerk PC's - Volume Group 'safe' op fysiek gescheiden station(s) bevattend:
-backup (tarball) van VG 'main' met het OS
-backup (tarballs) van VG 'data' subsectie 'backup'
-backup (bestandsniveau) PiWiGo programma, database en images
Strategie
1. Backups in Databck subsectie Backup
Deze backups worden dagelijks gemaakt en oudere versies van minstens een week blijven bewaard.
2. Backups in Safe subsectie Vault
De backups naar deze fysiek gescheiden schijf worden wekeleijks gemaakt en er worden enkele oudere versies bewaard.
Een uitzondering is de backup van PiWiGo die dagelijks gemaakt wordt. Dit is inclusief de MySQL piwigo databasedump. Om te voorkomen dat per ongeluk
verwijderde afbeeldingen verdwijnen, worden alle bestanden bewaard. Het verwijderen van bestanden die niet (meer) in de bron voorkomen moet op de hand uitgevoerd worden en alleen als we absoluut zeker zijn dat de bron compleet en corrrect is. Zie Server::Utility Scripts sectie Optie 2: Piwigo backup
Backup Flowchart
Zie voor een compleet overzicht van databronnen en backuplokaties de backup-flowchart
Onderstaande uitsnede van de flowchart toont de schijfstations ingedeeld volgens ClearOS recommendaties
Overzicht van backuptaken
Het volledige pakket van backups en methodes zoals deze in onderstaande volgorde in detail besproken gaat worden:
- Configuratie Backup
Opslag van alle OS configuratiedata voor een 'systeemherstel'
Dagelijks naar Databck subsectie Backup - Operating System Backup
Sysback script voor opslag van het complete OS naar een fysiek gescheiden station
Wekelijks naar Safe subsectie Vault - BackupPC Serverdata
ClearOS App geconfigureerd voor backup en restore van serverdata (live naar backup)
Dagelijks naar Databck subsectie Backup - BackupPC Netwerk PC's
ClearOS App geconfigureerd voor backup en restore van client PC's op het lokale netwerk
Dagelijks naar Databck subsectie Backup - BackupPC Safe
ClearOS App geconfigureerd voor backup van alle data naar fysiek gescheiden station
Wekelijks naar Safe subsectie Vault.
PiWiGo Datalive subsectie Live dagelijks naar Safe subsectie Vault
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 testserver uitziet:
Configuratie Backup
Met de Configuratie Backup App wordt een snapshot gemaakt van alle configuratie bestanden. Deze backups kunnen optioneel opgeslagen worden op een ander systeem.
Als een ClearOS systeem hersteld moet worden kan dit middels herinstallatie van het ClearOS systeem gevolgd door een restore van de configuratiesettings van de backup.
De Configuratie Backup App is onderdeel van het ClearOS core systeem en wordt standaard geïnstalleerd als onderdeel van Webconfig.
Zie voor php code
https://github.com/clearos/app-configuration-backup in librairies configuration_backup.php
Menu: Webconfig>System>Backup>Configuration Backup and Restore
De opties spreken voor zich. Er is een button 'Backup Now' om zelf een backup te starten.
In de sectie 'Archives' kan gekozen worden een eerder gemaakte backup te downloaden voor opslag op een ander systeem.
Met de button 'Restore' starten we een restore van de configuratie met de desbetreffende backup. Ook kan hier gekozen worden een specifieke backup te verwijderen.
In de sectie 'Restore from Archive' openen we een op een ander systeem opgeslagen backup om te gebruiken voor de restore.
Configuratie van de App
Alle settings zijn voorgeprogrammeerd en in wijzigen door de gebruiker is niet voorzien.
De backup/restore app slaat van alle geïnstalleerde Webconfig Apps de configuratie informatie op inclusief:
- Gebruikersnamen en wachtwoorden
- Netwerk configuratie
- Firewall configuratie
- Software configuratie zoals bijv. contentfilter.
De lijst van de door Configuratie Backup geregistreerde apps is te vinden op /var/clearos/configuration_backup/installed_apps.txt
De configuratiebestanden waarvan een backup gemaakt moeten worden staan in het bestand /usr/clearos/apps/configuration_backup/deploy/backup.conf
Als er Apps van derden op het systeem geïnstalleerd zijn moeten de configuratiebestanden van deze apps handmatig toegevoegd worden in backup.conf
Voeg toe voor Awstats:
- /etc/cron.hourly/awstats*
- /etc/httpd/conf.d/awstats.conf
Backup Frequentie
De Configuratie Backup App wordt dagelijk uitgevoerd middels een cron in: /etc/cron.d/app-configuration-backup
Hier kunnen we dus eventueel de frequentie van backups wijzigen
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 50 3 * * * root /usr/clearos/apps/configuration_backup/deploy/backup-now >/dev/null 2>&1
Backup Opslag Locatie
De backups van de afgelopen 10 dagen worden bewaard.
Het default opslag pad is: /var/clearos/configuration_backup/backup-testserver_lan-mm-dd-yyyy-hh-mm-ss.tgz
Ten behoeve van gecentraliseerde dataopslag wordt zoals uitgewerkt in de sectie Server::Gebruikersdata Opslag een bindmount toegepast en de backups staan daarom fysiek op:
/store/data0/backup/server1/configuration_backup/backup-testserver_lan-mm-dd-yyyy-hh-mm-ss.tgz
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.
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.
# 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 -cvzf $sysbackdir$datestamp"-sysback.tar.gz" / --exclude /vault --exclude /proc --exclude /sys --exclude /home --exclude /store --exclude /var/www/html --exclude /var/lib/BackupPC --exclude /var/lib/system-mysql --exclude /var/lib/mysql --exclude /var/clearos/configuration_backup --exclude /run; # 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'
Taak schedulen
Het maken van de backup wordt wekelijks uitgevoerd door middel van een 'cron' (var/spool/cron/root) die het script aanroept.
0 0 * * 0 /usr/local/bin/sysback &> /dev/null
Met deze cron draait het script elke dag om 00:00 uur.
Tevens kan de backup manueel gestart worden vanuit het script 'backup'. Zie hiervoor Server::Utility Scripts sectie Optie 1: Server OS backup
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.
- De backups zijn opgeslagen in /vault/sysback
- Als de backups in /vault missen of corrupt (ransomware) zijn gebruik dan de backups op de Backup-Server
- 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
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
- Start de machine met monitor en de installatiedisk ClearOS 7
- Selecteer Troubleshooting en vervolgens 'Rescue a ClearOS system' en vervolgens het systeem laten proberen de systeemimage op /mnt/sysimage te laten zetten.
- 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. - # cd /
- # ls -l /vault/sysback
(geeft listing met de meest recente sysback tarballs bv 20161099-sysback.tar.gz) - # tar -xzvf /vault/sysback/20161099-sysback.tar.gz usr
Hiermee is /usr teruggezet met de backup
Zie ook Red Hat Basic System Recovery
Rescue mode
Optie als het OS van de Installatiedisk het systeem niet kan mounten op /mnt/sysimage
Zie ook How to boot in to Rescue Mode on Red Hat RHEL or CentOS
- Start de machine met monitor zonder installatiedisk
- Zodra het PC flash screen verschijnt op een key (bijv spacebar) blijven tikken totdat het menu verschijnt
- Scroll naar de optie: CleraOS (0-rescue-*) 7 (Final) en druk 'e' zoals onderaan het scherm aangegeven
- Scroll nu naar beneden naar de regel beginnend met 'linux16' en scroll naar het einde van de regel (vóór 'initrd16)
- Type nu een spatie gevolgd door: rescue
- Druk Ctrl-x en het systeem start nu in rescue mode
- Zoek de fout en/of gebruik de sysback tarball zoals hierboven beschreven om bestanden terug te zetten
Grub Restore
De tarball 20151025-sysback.tar.gz bevat de rootbestanden en de kernel.
Na een restore met dit bestand zal ClearOS 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-DVD of -USB.
Selecteer nu bovenstaande 'rescue' optie en voor de volgende commando's uit:
# cd /dev/sda1
# grub -install /dev/sda1
# reboot
Zie ook How to Use GRUB Rescue Commands to Fix Linux Boot Failure
BackupPC: App Installatie
BackupPC is een module voor ClearOS 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 ClearOS App en wordt geïnstalleerd via Marketplace.
NOTE: Het BackupPC programma is beschikbaar in de 'clearos-epel' repositorie. Zorg dat deze repository in Webconfig > Cloud > Updates > Software Repository enabled is.
Initiatie
Na de installatie is de App te vinden in Webconfig > Server > Backup > BackupPC
De BackupPC service moet ten eerste gestart worden. Klik hiervoor Start in de informatiesectie aan de rechterkant.
Voer nu een wachtwoord in voor de gebruiker 'backuppc'
Klik nu 'Go to BackupPC Management Tool' om in de browser het BackupPC administratie tool te openen.
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.
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:
- Open de BackupPC Administratie Console met de url: https://homeserver:81/backuppc
- Selecteer tab CGI en zet CgiDateFormatMMDD naar '0' en save.
Hiermee zetten we het datumformaat van US naar International - Selecteer tab Email en zet EmailUserDestDomain naar 'makkink.eu'
- Selecteer tab Schedule en wijzig BlackoutPeriods > weekDays naar '0, 1, 2, 3, 4, 5, 6' (alle dagen) en save
- Selecteer tab XFER en zet XferMethod > 'rsyncd' en RsyncdUserName > 'backuprsyncd' en RsyncdPasswd > wachtwoord als ingevoerd in rsyncd.secrets
- Selecteer tab Server en zet pingPath > '/bin/ping'
- selecteer tab Backup Settings en verwijder alle entries uit: NmbLookupCmd en NmbLookupFindHostCmd. Zet PingCmd > '/usr/local/bin/wolping -c1 -w3 $host'.
Zie ook Permissies /bin/ping voor BackupPC en 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.
Permissies
/bin/ping voor BackupPC
Om met Windows machines te verbinden voor backup wordt in de rsyncd methode als eerste een ping verstuurd naar de Windows machine om te verifiëren dat deze beschikbaar is. In ClearOS 7.2.0 krijgt BackupPC geen toegang tot het commando /bin/ping met de permisssies -rwxr-xr-x.
In de oudere versies van ClearOS waarbij BackupPC wel werkte waren de permissies -rwsr-xr-x. De s-bit staat toe dat iedere persoon of proces die /bin/ping aanroept toegang krijgt tot de systeembronnen alsof ze de eigenaar van /bin/ping zijn.
Corrigeer de permissies van /bin/ping in ClearOS 7.2.0 met commando: chmod u=rwxs /bin/ping
BackupPC: Serverdata backup
De server (local host) 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.
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.
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 |
Beperkt volume, nauwelijks activiteit |
ben-xps | Full: 1x /week, bewaar 4 Incr.: 1x /dag, bewaar 6 |
Behoorlijk volume, veel activiteit, veel experimenten, met gevaar van late ontdekking |
erica | Full: 1x /week, bewaar 2 Incr.: 1x /dag, bewaar 6 |
Behoorlijk volume, weinig activiteit |
benovo | Full: 1x /week, bewaar 2 Incr.: 1x /dag, bewaar 6 |
Beperkt 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 /maand, bewaar 1 Incr.: 1x /dag, bewaar 27 |
Behoorlijk volume, veel activiteit, veel experimenten, met gevaar van late ontdekking |
Virtual Host
BackupPC is een ClearOS module 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.
- Host 'server' : alle /store/live mappen behalve ../webroot, ../home/files en ../home/pwgdata
- Host 'server-afbeeldingen': /store/live/home/files/afbeeldingen
- Host 'server-documenten': /store/live/home/files/documenten
- Host 'server-e-books': /store/live/home/files/e-books
- Host 'server-muziek': /store/live/home/files/muziek
- Host 'server-video': /store/live/home/files/video
- Host 'server-www': /store/live/webroot (/var/www/html) behalve piwigo
Host 'server' configuratie
- 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 - 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.
- 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 RsyncClientCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- Vink override van RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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 - De backup van host 'server' wordt opgeslagen op /store/backup/backuppc/pc/server
Host 'server-afbeeldingen' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
- Host: 'server-afbeeldingen'
- 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. - Per-PC config XFer. Laat XferMethod als het is: 'rsync'
- RsyncShareName override en zet entry naar: /store/live/home/files/afbeeldingen
- BackupFilesExclude geen override
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-afbeeldingen' wordt opgeslagen op /store/backup/backuppc/pc/server-afbeeldingen
Host 'server-documenten' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
- Host: 'server-documenten'
- 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. - Per-PC config XFer. Laat XferMethod als het is: 'rsync'
- RsyncShareName override en zet entry naar: /store/live/home/files/documenten
- BackupFilesExclude override en zet entry: * en /Mirror-bens-pc
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-documenten' wordt opgeslagen op /store/backup/backuppc/pc/server-documenten
Host 'server-e-books' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
- Host: 'server-e-books'
- 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. - 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
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-e-books' wordt opgeslagen op /store/backup/backuppc/pc/server-e-books
Host 'server-muziek' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
- Host: 'server-muziek'
- 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. - Per-PC config XFer. Laat XferMethod als het is: 'rsync'
- RsyncShareName override en zet entry naar: /store/live/home/files/muziek
- BackupFilesExclude geen override
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-muziek' wordt opgeslagen op /store/backup/backuppc/pc/server-muziek
Host 'server-video' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
- Host: 'server-video'
- 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. - Per-PC config XFer. Laat XferMethod als het is: 'rsync'
- RsyncShareName override en zet entry naar: /store/live/home/files/video
- BackupFilesExclude geen override
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-video' wordt opgeslagen op /store/backup/backuppc/pc/server-video
Host 'server-www' configuratie
Volg de procedure als omschreven in Host 'server' configuratie.
Note: Exclude PiWiGo met alle images!
- Host: 'server-www'
- 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. - 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
- RsyncClientCmd override en zet entry naar: /usr/bin/sudo $rsyncPath $argList+
- RsyncClientRestoreCmd en zet entry naar: /usr/bin/sudo $rsyncPath $argList+ - 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.
- De backup van host 'server-www' wordt opgeslagen op /store/backup/backuppc/pc/server-www
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:
- 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).
- WOL met BackupPC (optioneel). Middels een zelf te schrijven script kan BackupPC een client-PC in slaapstand proberen te wekken voor een backup.
- 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.
- GMail-backup. Wekelijks wordt op de Windows PC's Outlook gestart om de webmail accounts te synchroniseren en lokaal op te slaan.
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 testserver 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 mainserver.lan mainserver 192.168.178.5 homeserver.lan homeserver 192.168.178.2 ben-pc 192.168.178.10 ben-xps 192.168.178.15 benovo 192.168.178.14 erica
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. Zie ook https://www.dell.com/support/kbdoc/en-us/000175283/how-to-setup-wake-on-lan-wol-on-your-dell-system?lang=nl
- 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.
- Zoek vervolgens in de BIOS naar Power Options en disable DeepSleep Control S4 en S5
- 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!
- 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)
ETHER-WAKE
De ClearOS 7 distributie is voorzien van het ether-wake 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 ether-wake 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.
Gebruik het commando # arp om een lijst te krijgen van alle machines op het lokale netwerk met de bijbehorende MAC adressen.
Als voorbeeld het /etc/ethers bestand op de mainserver:
18:03:73:3f:21:21 ben-xps CC:96:E5:4A:F3:02 ben-pc # This is an auto-generated file. Please do NOT edit # Comments are used to aid in maintaining your hosts # file
Op 21-01-2024 is in plaats van de hosts 'ben-xps' nu 'ben-pc' verbonden met een kabel
Om bijv. de host 'ben-pc' te wekken volstaat nu het commando: # ether-wake ben-pc
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/ether-wake 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/ether-wake
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 ether-wake ben-pc
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-xps' 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 'wolping' script 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 Ben Makkink 21-10-2015 *
# ***********************************************************************
# * 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 *
# * Ether-wake werkt met het MAC address, zorg dus dat PC naam en de *
# * bijbehorende MAC-address vermeld zijn in /etc/ethers *
# ***********************************************************************
PING=/bin/ping
ARG1=$1 # -c1
ARG2=$2 # -w3
WAKEHOST=$3 # $host
ETHWAKE='/usr/bin/sudo /sbin/ether-wake'
SLEEPTIME=20s
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
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
- Download de RSYNCD installer van de Sourceforge BackupPC projectpagina naar de Windows PC. Selecteer de laatste versie cygwin-rsyncd..._installer.exe.
- Dubbelklik op cygwin-rsyncd-x.x.x.x_installer.exe en de deamon wordt geïnstalleerd in map c:\rsyncd
- 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. - Maak in c:\rsyncd een batchbestand genaamd 'backuppc-win10-firewall-mainserver.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.1.4,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 mainserver op 192.168.1.4
Installeer de firewall rules voor rsyncd door het bestand als ADMINISTRATOR eenmalig uit te voeren. - 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.1.2::Drivers /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
GMail local backup
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
- Download (https://www.thunderbird.net/nl/) en installeer Thunderbird (niet als standaard e-mail toepassing)
- 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. - 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
- Geef Thunderbird-menu weer (drie streepjes rechts in scherm):
- Selecteer Add-ons > Extensies. Verifieer dat al geïntegreerde add-on ‘Lightning’ ingeschakeld is.
- Selecteer in Add-ons > Extensies het zoekvak en type: ‘Provider for Google Calendar’, selecteer en installeer ‘Provider for Google Calendar’
- 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. - 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.
- Kies de agenda’s die u in Thunderbird wilt gebruiken. In ieder geval ‘ben@makkink.eu’
- Klik op Volgende. Er is een bevestiging dat de agenda is aangemaakt. Klik op Voltooien en klik op ‘synchroniseren’.
Contacten Synchronisatie
- Geef Thunderbird-menu weer (drie streepjes rechts in scherm):
- Selecteer Add-ons > Extensies en selecteer zoekvak en type: ‘gContactSync’
Selecteer en installeer ‘gContactSync’. - Na herstart van Thunderbird:
* Volg Wizard, selecteer bestaande account ‘ben@makkink.eu’ en log in
* Selecteer all contacts and groups
* Selecteer Read-only en verwijder vink bij skip contact without e-mail
* Klik voltooien - Klik in ‘Postvak IN op tab ‘Adresboek’ voor 1e synchronisatie van ‘ben@makkink.eu’
Instellingen:
Ga naar Thunderbird Menu (3 streepjes) > Opties > Account instellingen. Ga door alle tabs en verwijder vinkjes voor opties zoals meldingen en andere zaken die voor onze backup functie niet zinnig zijn.
Ga naar Thunderbird Menu (3 streepjes) > Opties> Opties> 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.
Open Adresboek en selecteer: Extra > Opties. Ga door alle tabs en verwijder ook hier alle zinloze functie zoals geluiden en meldingen.
Open Adresboek en selecteer: gContactSync > Preferences. Wijzig in tab Main de ‘Initial sync delay’ naar 1. Rest ongewijzigd.
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
@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.
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'.
Host 'ben-pc' configuratie
- 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 - Selecteer Per-PC config: Hosts > 'ben-xps' 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 - 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 - 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.
- De backup van host 'ben-pc' wordt opgeslagen op /store/backup/backuppc/pc/ben-pc
Host 'erica' configuratie
- 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 - 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
- Save
- 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 - 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.
- De backup van host 'erica' wordt opgeslagen op /store/backup/backuppc/pc/erica
Host 'tablet' configuratie
Niet meer in gebruik. Alleen als voorbeeld
- 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 - 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
- XFer Settings: 'tablet' heeft dezelfde shares als 'ben-pc''. Bij BackupFilesExclude voegen we toe AppData/NVIDIA
- 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.
- De backup van host 'tablet' wordt opgeslagen op /store/backup/backuppc/pc/tablet
Host 'benovo' configuratie
- 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 - 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
- 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 . - 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.
- De backup van host 'benovo' wordt opgeslagen op /store/backup/backuppc/pc/benovo
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.
- Selecteer een Host
- Edit Config (van de Host, niet de algemene config)
- Schedule > BackupDisable: vink Override aan en zet waarde naar 2
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.
Onderstaande Backups Archiveren naar Safe worden niet gescheduled in BackupPC maar d.m.v. een cron.
Zo'n taak stoppen wordt gedaan door het verwijderen van de cron.
BackupPC: Backups Archiveren naar Safe
Alle hiervoor behandelde backups werden opgeslagen op de zelfde fysieke schijf als de 'live' data. Als deze schijf crasht dan zijn we alsnog alles kwijt.
Daarom is een extra harde schijf bijgezet Zie ook de Flowchart Deze schijf 'sdd' is toegevoegd aan de Volume Group 'Safe' met Logical Volume '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
- Selecteer 'Main Configuration Editor' > 'Edit Hosts' > Add
- Voeg bij Hosts een nieuwe host toe: 'archivaris' en Save - 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 - 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!)
- Save - De rest van de defaultinstellingen van host 'archivaris' kunnen gelaten worden voor wat ze zijn.
- Maak hostmap voor archivaris: /store/backup/backuppc/pc/archivaris, chown backuppc:backuppc en chmod 750
- 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.
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:
!/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 +4 |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-hostWaarbij 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 |
0 23 * * 1 /usr/local/bin/archiveer-host ben-xps &> /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 * * 3 /usr/local/bin/archiveer-host server-e-books &> /dev/null | elke woensdag 23:00 |
0 23 * * 4 /usr/local/bin/archiveer-host asrock &> /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
- 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 Server::Utility Scripts sectie Piwigo dagelijkse backup met cron
- 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.
Archief naar Externe Schijf
Tot nu toe staan alle backups en archieven op fysiek gescheiden schijven maar nog steeds op de zelfde machine.
Als laatste stap worden tweemaal per jaar naar een externe USB-disk geschreven. De procedure is geen hoogstandje en wordt aan de commandprompt uitgevoerd.
- 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
- 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 - Maak een mountpoint: # mkdir /mnt/usb
- Mount sdd1: # mount -t ext4 /dev/sdd1 /mnt/usb
- 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 - Verwijder oude backuppc bestanden van externe schijf
# rm -rf /mnt/usb/vault/backuppc/*.tar.gz - Ga naar map /mnt/usb/vault/backuppc/
# cd /mnt/usb/vault/backuppc/ - 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.
BackupPC migreren naar andere server
Voor het verhuizen van BackupPC naar een andere server zijn de volgende stappen te doen:
- Installeer en activeer BackupPC op de nieuwe server
- Kopieer al de configuratie bestanden /etc/BackupPC/* van oude naar nieuwe server
- Kopieer al de backupdata bestanden /var/lib/BackupPC/* van oude naar nieuwe server.
Zie sectie Backup Opslag Locatie voor de actuele opslaglocatie (bind)
Backup naar Stack Cloud
Alle voorgaande backups bevinden zich op één en dezelfde locatie. Het is veiliger als er ook kopiën op een andere locatie bewaard worden. Hiervoor maak ik gebruik van de gratis TransIP online opslag STACK met een capaciteit van 1000 GB.
Omdat STACK ondersteuning biedt voor WebDAV, kun je deze storage ook als externe opslag 'mounten' om te gebruiken voor het maken van back-ups van de data op je server.
WebDAV is een protocol op het internet dat een uitbreiding is van het protocol HTTP. De afkorting staat voor Web-based Distributed Authoring and Versioning, wat vrij vertaald neerkomt op webgebaseerd en verdeeld auteurschap met versiebeheer. Distributed authoring verwijst naar user-generated content.
De bedoeling van het WebDAV-protocol is ervoor te zorgen dat het wereldwijde web een leesbaar en schrijfbaar medium wordt. Daarom voorziet het in de mogelijkheid om op afstand documenten aan te maken, te veranderen en te verplaatsen op een server (meestal een webserver). Hierdoor kunnen documenten op een website bijgewerkt worden, maar bestanden kunnen ook bewaard worden via het web, en ze kunnen daarna weer geopend worden.
In ons geval bewerkstelligen we dat de online opslag STACK op de server gemount wordt en gebruikt kan worden als ware het lokale opslag.
Twee-Factor Authenticatie voor STACK
We maken gebruik van de twee-Factor Authentication (2FA) voor STACK. 2FA houdt in dat je naast je wachtwoord een extra code moet invullen, voordat je toegang krijgt tot jouw STACK. Deze code is alleen in te zien via een 2FA-app voor je smartphone (zoals LastPass Authenticator).
Dit betekent dat, mochten je inloggegevens van jouw STACK onverhoopt in de verkeerde handen vallen, er niet ingelogd kan worden. Zij hebben namelijk geen toegang tot de unieke code die jij op je 2FA-app hebt ingesteld. Deze codes zijn ook nog eens maar 30 seconden geldig, waardoor het zo goed als onmogelijk is om achter deze eenmalige codes te komen.
Two-factor authentication voor STACK inschakelen
De hierna volgende stappen zijn beschrevenn op de site van TRANS-IP
- Om 2FA voor STACK in te schakelen, log je eerst in op de webinterface. Klik hierbinnen rechtsboven op je gebruikersnaam en daarna links op 'Instellingen'.
- Onder het kopje ' Toegang tot jouw STACK' zie je nu 'Two-factor authentication' staan. Klik hieronder op 'Inschakelen'.
- Om 2FA in te schakelen moet je het wachtwoord van jouw STACK opnieuw invoeren.
In een drietal stappen schakel je nu 2FA voor STACK in.
Hiervoor is het van belang dat je een 2FA-app bijv. LastPass Authenticator op je smartphone installeert. In de app open je de QR-code scanner, welke je gebruikt om de unieke QR-code binnen de webinterface te scannen. Binnen de app wordt er vervolgens een gebruiker aangemaakt met hierbij een unieke code. Zodra jouw unieke code zichtbaar is in je 2FA-app, voer je deze in en klik je op 'Bevestigen'. - Je ziet nu een pop-up venster met hierin tien two-factor recovery-tokens. Mocht je 2FA-app niet bereikbaar zijn, dan kun je één van deze tokens gebruiken in plaats van het wachtwoord om alsnog toegang tot je STACK te krijgen. Sla deze tokens op in bijv. LastPass.
Netwerkschijfverbinding via WebDAV
Zie hiervoor ook de TRANS-IP site
- Nu 2FA actief is, kan alleen een netwerkschijfverbinding via WebDAV gemaakt worden met een speciaal token.
Je voert bij het maken van de netwerkschijfverbinding dus niet je STACK-wachtwoord in en ook niet de unieke code die door je 2FA-app wordt gegenereerd, het WebDAV-protocol ondersteunt namelijk geen 2FA. In plaats daarvan voer je een speciaal token in die je in de Stack webinterface aanmaakt.
Klik in de webinterface rechtsboven op je gebruikersnaam en daarna links op 'Instellingen'.
Onder het kopje 'Toegang tot jouw STACK' zie je 'Toegangstokens' staan. Klik hieronder op 'Beheren' en vul het wachtwoord van jouw STACK opnieuw in. - Klik nu op '+ Nieuw token'. Geef het token een label en kies onder 'Type' voor WebDAV.
Klik hierna op 'Opslaan' en in een popup wordt het token voor WebDAV weergegeven. - Voer dit token in in plaats van het wachtwoord in het Linuxbestand /etc/davfs2/secrets zoals in onderstaande sectie onder item 4 beschreven
Installatie Procedure Webdav:
Zie ook: STACK als externe back-up voor je VPS gebruiken
- Allereerst heb je 'davfs2' nodig op je VPS. Mocht je davfs2 nog niet geïnstalleerd hebben dan voer je het volgende commando uit:
# yum install davfs2
(davfs2 is beschikbaar in de Clearos-epel repository en yum installeert tevens de dependencies: libmodman, libproxy.neon en pakchois).
- Voeg jezelf (root) toe aan de groep 'davfs2'
# usermod -aG davfs2 root
Verifieer: # groups root
Note: Om later bijvoorbeeld root uit de groep te verwijderen # gpasswd -d root davfs2
- Maak een mountpoint aan voor STACK
# mkdir /home/stack
Op mijn server is de gebruiker 'root' en we maken daarom gebruik van de globale configuratie van davfs2.
We maken dus niet, zoals in de TransIP instructie gebruik van een verborgen gebruikersmap ~/.davfs2 (zie hiervoor ook https://unix.stackexchange.com)
- Automatisch inloggen met davfs2/secrets.
Edit het bestand /etc/davfs2/secrets. Hier voeg je ergens in het bestand de URL van je WebDAV toe en de gebruikersnaam en het wachtwoord of token van je STACK account:
https://<gebruikersnaam>.stackstorage.com/remote.php/webdav/ <gebruikersnaam> <wachtwoord>
of bij Two-factor authentication
https://<gebruikersnaam>.stackstorage.com/remote.php/webdav/ <gebruikersnaam> <token>
- Plaats regel voor de mount in fstab
Edit het bestand /etc/fstab en voeg de volgende regel toe:
https://<gebruikersnaam>.stackstorage.com/remote.php/webdav/ /home/stack davfs user,rw,noauto 0 0
Voer # mount -a uit of reboot
Note: We gebruiken de optie 'noauto' om te voorkomen dat STACK altijd gemount zou zijn. Dit willen we alleen als we een backup willen maken of data terug willen zetten.
- Mount STACK met het commando:
# mount /home/stack
De toegevoegde regel in davfs2/secrets verstrekt nu de gebruikersnaam en het bijbehorende wachtwoord en dan is je STACK als extra partitie gemount.
Nu kun je bijvoorbeeld met behulp van het commando 'rsync' lokale data van je server kunnen back-uppen op je STACK.
Een simpel voorbeeld van een dergelijk commando is onderstaand:
# rsync -ruv --inplace /home/pwgdata /home/stack/
Fout: Geen verbinding met Stackstorage.com
Als er na het commando # mount /home/stack geen internet verbinding tot stand gebracht kan worden
met Stackstorage.com zal er een time-out optreden en wordt de mount alsnog gemaakt, maar zonder verbinding met STACK.
Alle bestanden die vervolgens met het rsync commando naar /home/stack gestuurd worden belanden dan op de server zelf in de fysieke map /home/stack waardoor de server in no-time vol zal lopen en er geen backup in de cloud gemaakt wordt.
In het backupscript maken we daarom een controle, waardoor de backup
niet uitgevoerd wordt als er geen internetverbinding met Stackstorage.com gemaakt kan worden.
Zie als voorbeeld sectie
Stack-ben-xps voor de inpassing in het volledige backupscript.
NOW=$(date +"%d/%m/%Y %T") ping -q -w3 -c1 transvaal.stackstorage.com
if [ "$?" != 0 ]; then echo "Backup van BEN-XPS naar STACK op "$NOW" werd niet uitgevoerd."\ >> /usr/local/stack-aborted
exit;
fi
Het is nu zaak dat er een bericht gestuurd wordt dat de geplande backup niet is uitgevoerd. Maar de kans is groot dat de backup niet doorging vanwege een storing in eigen netwerk of uitval van het internet. Een bericht van de server zal de beheerder dan ook niet bereiken.
Om toch een bericht achter te kunnen laten wordt daarom een tijdelijk bovenstaand vlagbestand /usr/local/stack-aborted aangemaakt, die bij de eerstvolgende succesvolle backup weer verwijderd wordt.
Vervolgens wordt dagelijks middels een cron het script 'stackerror' uitgevoerd (Zie hier volledig script). In dit script wordt allereerst gecheckt of er nu wel een internet verbinding is. Vervolgens wordt gezocht naar het vlagbestand /usr/local/stack-aborted en als deze gevonden wordt, wordt met de inhoud van het vlagbestand en de template /usr/local/bin/stackerror.txt een e-mail opgesteld met instructies voor het alsnog op de hand uitvoeren van de mislukte backup en deze wordt verzonden naar de beheerder (Zie hier inhoud van de e-mail template).
Optioneel automatisch inloggen met script
De toegevoegde regel in /etc/davfs2/secrets (punt 4) verstrekt de gebruikersnaam en wachtwoord. Als we deze regel niet toevoegen zal het commando # mount /home/stack resulteren in het vragen naar gebruikersnaam en wachtwoord van je STACK account.
Als we om welke reden dan ook niet van het 'secrets' bestand willen of kunnen gebruiken kunnen we dit oplossen door gebruik te maken van het commando 'expect' in een script.
Installeer om te beginnen 'expect':
# yum install expect
Maak nu een script en noem die bijvoorbeeld '.stackmount' (chmod 544) met de inhoud:
#!/usr/bin/expect -f spawn mount -o username=<gebruikersnaam> /home/stack; expect "Password: "; send "<wachtwoord>\r"; expect "$ ";
Met dit script mounten we /home/stack en met 'expect' en 'send'voeren we het benodigde wachtwoord in.
Verhuis de davfs2 cache directory
Met de installatie van davfs2 wordt per default een cache folder aangemaakt in /var/cache/davfs2.
Bij het kopieren en/of synchroniseren van data tussen de server en de gemounte cloud Stack worden de bestanden eerst naar het cachebestand geschreven. Als we veel en/of grote bestanden hebben loopt /var hier bijna onmiddelijk vol (op mijn homeserver is voor /var 10 Gb gereserveerd).
Het is beter een drive te selecteren met voldoende ruimte voor deze tijdelijke cache, bijvoorbeeld /home.
# mkdir /home/davfs2
# chgrp davfs2:davfs2 /home/davfs2
Edit davfs2 configuratie bestand /etc/davfs2/davfs2.conf
Zoek de regel 'cache_dir' en wijzig
/var/cache/davfs2 naar /home/davfs2
Bekende problemen met davfs2 in combinatie met Stack
Stack laat niet toe dat de bestandsattributen in de cloud geschreven worden. Naar de cache gaat het goed en blijven de attributen behouden en ook in de cloud lijkt het in orde. Maar zodra de transfer compleet is en de cache dus leeg en we hierna unmounten dan zijn de oorspronkelijke attributen verloren. Bijvoorbeeld de oorspronkelijke aanmaaktijd vaneen bestand is nu gewijzigd naar de modificatietijd dus in dit geval de timestamp van de upload. Ook de permissies zijn gewijzigd naar 644 en user root.
RSYNC:
rsync -a heeft dus geen zin en resulteert zelfs in foutmeldingen omdat STACK niet toelaat dat de attributen in de cloud door davfs2 geupdated worden.
Ook rsync
-t (preserve time) werkt niet.
Gebruik rsync -u (update). Hiermee slaan we de bestanden over waarvan al een gelijke of nieuwere versie in de cloud staat. Voeg -r toe om recursive te werken en -v voor verbose.
Per default checkt rsync de timestamp en de bestandsgrootte om vast te stellen of er een synchronisatie (update) uitgevoerd moet worden.
Met deze backup of synchronisatie met rsync (of ook bij cp) gaan dus de aanmaak-timestamps verloren. Bij JPG betsanden is deze nog weer terug te halen uit de EXIF
Grote video/film bestanden
Bestanden groter dan 1 Gigabite leveren met davfs2 problemen op en blijven hangen. Dus deze methode is minder geschikt voor de transfer van video en film.
Om een backup te maken van de /home/files/video folder op mijn homeserver kan ik davfs2 niet gebruiken en moet het handmatig uitgevoerd worden op de TRANSIP STACK webpagina.
Herstel Timestamp uit de JPG EXIF
Als we afbeeldingen, opgeslagen in de STACK cloud, gebruiken voor een restore dan plaatsen we deze op de server in /home/afbeeldingen of /home/pwgdata/galleries.
Om de verlorengegane timestamp van de aanmaakdatum te herstellen gebruiken we 'jhead' en de aanmaakdatum opgeslagen in de EXIF data. Zie hiervoor ook Stackexchange
# cd <directory met de images>
# jhead -ft *.JPG
of recursive en voor zowel JPG, jpg, JPEG en jpeg
# cd <directory met de images>
# find -iname '*.jp*g' -exec jhead -ft {} +
Backupscripts voor de update naar Stack
Middels scripts maken we van de verschillende onderdelen op onze server backups en/of synchronisaties. Voor deze scripts maken we cron-opdrachten en een menu om handmatig aanvullende backups te kunnen maken of overtollige (oude) data te verwijderen met synchronisaties.
Voor de verschillende onderdelen maken we onderstaande backupscripts:![]() |
![]() |
||
1. | stack-ben-xps | Van de PC 'ben-xps' de partitie 'Data' | |
2. | stack-erica | Van de PC 'erica' de partitie 'Data' | |
3. | stack-benovo | Van de PC 'benovo' de partitie 'Data' | |
4. | stack-files | De fileserver shares: /home/files/documenten, /home/files/muziek en /home/files/e-books | |
5. | stack-www | De webserver bestanden: /var/www/html behalve Piwigo en Wordpress Blog | |
6. | stack-pwg | Piwigo fotogalerij webprogramma en data | |
7. | stack-wp | Wordpress Blog webprogramma en data |
In elk script wordt de STACK cloud gemount op /home/stack en vervolgens rsync uitgevoerd voor een backup of synchronisatie. Afsluitend wordt de mount weer verwijderd.
Als laatste wordt een menuscript 'stackbackup' gemaakt om de diverse scripts handmatig uit te kunnen voeren.
BackupPC formaat
Van de PC's maakt de server backups met het programma BackupPC. Dit backupformaat is niet zinvol om te gebruiken voor een restore uit de STACK cloud omdat we dan eerst een werkende linuxserver met BackupPC moeten hebben om de restoredata uit te kunnen lezen. Wekelijks wordt echter met BackupPC een archief gemaakt van alle BackupPC backups.
Voor de backup naar de cloud gebruiken we deze archieven, pakken ze uit en transferren we alleen de gebruikersdata naar de cloud.
Stack-ben-xps
Zie hier het volledige script.
Hieronder de relevante regels:
Alleen uitvoeren als er communicatie mogelijk is met Stackstorage.com
Zonder verbinding zal de benodigde mount van Stackstorage mislukken. Zet vlagbestand en quit script.
NOW=$(date +"%d/%m/%Y %T") ping -q -w3 -c1 transvaal.stackstorage.com if [ "$?" != 0 ]; then echo "Backup van BEN-XPS naar STACK op "$NOW" werd niet uitgevoerd."\ >> /usr/local/stack-aborted exit; fi
Switch Backup of Synchronisatie
Het commando stack-ben-xps zal resulteren in een Backup en stack-ben-xps sync in een synchronisatie. Zie blok hieronder: RSYNC Backup of Synchroniseer.
SYNC=; if [ "$1" == "sync" ] ; then SYNC=--delete; fi
Unmount /home/stack
Verifieer dat /home/stack om wat voor reden dan ook nog gemount is en unmount deze
if mountpoint -q /home/stack; then umount /home/stack; fi
Delete /vault/tmp
Maak zeker dat de tijdelijke folder met verouderde bestanden niet meer bestaat
if [ -d /vault/tmp ]; then rm -rf /vault/tmp; fi
Wis cache
Verwijder het davfs2 cache bestand (van een vorige actie)
# Wis het davfs2 cache bestand (van een vorige actie) # -------------------------------------------------- rm -rf /home/davfs2/*; echo "cache is deleted";
Maak tijdelijke folder aan
Voor het uitpakken van het backuppc archief van de PC ben-xps
mkdir /vault/tmp;
Haal laatste archief
We kunnen de reguliere backup van ben-xps niet gebruiken omdat die in een formaat voor het programma BackupPc opgeslagen wordt. Om een restore met deze data te doen hebben we een server nodig met daarop het BackupPc programma.
We gebruiken daarom voor de cloud backup de archief backup van BackupPc in /vault.
Haal bestandsnaamnaam en pad van het laatste backuppc archief (tarball) van de PC ben-xps
FILE=$(ls -t /vault/backuppc/ben-xps* | head -n 1); echo $FILE " is geselecteerd voor uitgepakken in tijdelijk bestand.";
Pak geselecteerde archief uit
Pak van het archief alleen de folder /Data uit in de tijdelijke folder /vault/tmp
tar -xvzf $FILE -C /vault/tmp ./Data;
Mount /home/stack
Mount de STACK cloud op /home/stack
mount /home/stack;
RSYNC Backup of Synchroniseer
Transfer met rsync de data van /vault/tmp naar /home/stack/ben-xps. Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaand commando op de plaats van $SYNC de optie --delete toegevoegd.
rsync -ruv $SYNC --inplace /vault/tmp/Data /home/stack/ben-xps/;
Unmount /home/stack
Als het rsync commando uitgevoerd is zijn alle data getransferred naar de tijdelijke (lokale) cache en is de transfer naar de cloud nog alles behalve klaar.
Voordat we /home/stack unmounten meoten we daarom zeker stellen dat alle Webdav processen beeindigd zijn.
# Check of cache in /home/davfs2/ leeg is voordat verder gegaan wordt SLEEPTIME=60s CHECK=$(du -sm /home/davfs2/ | cut -f1); while [ $CHECK -gt 10 ] ; do echo; echo "Wacht, nog " $CHECK" Mb in lokale cache"; LAST=$CHECK; sleep $SLEEPTIME CHECK=$(du -sm /home/davfs2/ | cut -f1); if [ "$CHECK" -lt 60 ] && [ "$CHECK" == "$LAST" ]; then echo "Geen voortgang meer"; CHECK=1; fi; done # Probeer te unmounten als cache leeg is, indien nog bezig: later opnieuw. CHECK=$(du -sm /home/davfs2/ | cut -f1); while mountpoint -q /home/stack/ && ! umount /home/stack/ &> /dev/null; do echo; echo "Wacht, mount is nog bezig met transfer, nog " $CHECK" Mb in cache"; sleep $SLEEPTIME; CHECK=$(du -sm /home/davfs2/ | cut -f1); done
Delete /vault/tmp
Als de unmount gelukt is tijdelijk bestand /vault/tmp verwijderen
rm -rf /vault/tmp
Stack-erica
Zie hier het volledige script.
Zie voor gedetailleerde procedurebeschrijving voorgaande sectie 'Stack-ben-xps'
Hieronder alleen de afwijkende scriptregels:
FILE=$(ls -t /vault/backuppc/erica* | head -n 1);
RSYNC Backup of Synchroniseer
Transfer met rsync de data van /vault/tmp naar /home/stack/ben-xps. Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaand commando op de plaats van $SYNC de optie --delete toegevoegd.
rsync -ruv $SYNC --inplace /vault/tmp/Data /home/stack/erica/;
Stack-benovo
Zie hier het volledige script.
Zie voor gedetailleerde procedurebeschrijving voorgaande sectie 'Stack-ben-xps'
Hieronder alleen de afwijkende scriptregels:
FILE=$(ls -t /vault/backuppc/benovo* | head -n 1);
RSYNC Backup of Synchroniseer
Transfer met rsync de data van /vault/tmp naar /home/stack/ben-xps. Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaand commando op de plaats van $SYNC de optie --delete toegevoegd.
rsync -ruv $SYNC --inplace /vault/tmp/Data /home/stack/benovo/;
Stack-files
Zie voor download hier het volledige script.
Hieronder de relevante regels:
Het commando stack-files zal resulteren in een Backup en stack-files sync in een synchronisatie. Zie blok hieronder: RSYNC Backup of Synchroniseer.
SYNC=; if [ "$1" == "sync" ] ; then SYNC=--delete; fi
Unmount /home/stack
Check of /home/stack om wat voor reden dan ook nog gemount is en unmount deze
if mountpoint -q /home/stack; then umount /home/stack; fi
Wis cache
Verwijder het davfs2 cache bestand (van een vorige actie)
# Wis het davfs2 cache bestand (van een vorige actie) # -------------------------------------------------- rm -rf /home/davfs2/*; echo "cache is deleted";
Mount /home/stack
Mount de STACK cloud op /home/stack
mount /home/stack;
RSYNC Backup of Synchroniseer
Transfer met rsync de data van /home/files/documenten, /home/files/muziek en /home/files/e-books naar /home/stack/files.
Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaande commando's op de plaats van $SYNC de optie --delete toegevoegd.
rsync -ruv $SYNC --inplace --exclude Mirror-bens-xps /home/files/documenten /home/stack/;
rsync -ruv $SYNC --inplace /home/files/muziek /home/stack/;
rsync -ruv $SYNC --inplace /home/files/e-books /home/stack/;
Unmount /home/stack
Als het rsync commando uitgevoerd is zijn alle data getransferred naar de tijdelijke (lokale) cache en is de transfer naar de cloud nog alles behalve klaar.
Voordat we /home/stack unmounten meoten we daarom zeker stellen dat alle Webdav processen beeindigd zijn.
# Check of cache in /home/davfs2/ leeg is voordat verder gegaan wordt SLEEPTIME=60s CHECK=$(du -sm /home/davfs2/ | cut -f1); while [ $CHECK -gt 10 ] ; do echo; echo "Wacht, nog " $CHECK" Mb in lokale cache"; LAST=$CHECK; sleep $SLEEPTIME CHECK=$(du -sm /home/davfs2/ | cut -f1); if [ "$CHECK" -lt 60 ] && [ "$CHECK" == "$LAST" ]; then echo "Geen voortgang meer"; CHECK=1; fi; done # Probeer te unmounten als cache leeg is, indien nog bezig: later opnieuw. CHECK=$(du -sm /home/davfs2/ | cut -f1); while mountpoint -q /home/stack/ && ! umount /home/stack/ &> /dev/null; do echo; echo "Wacht, mount is nog bezig met transfer, nog " $CHECK" Mb in cache"; sleep $SLEEPTIME; CHECK=$(du -sm /home/davfs2/ | cut -f1); done
Delete /vault/tmp
Als de unmount gelukt is tijdelijk bestand /vault/tmp verwijderen
rm -rf /vault/tmp
Stack-www
Zie voor download hier het volledige script.
Zie voor gedetailleerde procedurebeschrijving voorgaande sectie 'Stack-files'
Hieronder alleen de afwijkende scriptregels:
Transfer met rsync de data van /var/www/html behalve piwigo en blog (wordpress) naar /home/stack/www.
Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaand commando op de plaats van $SYNC de optie --delete toegevoegd.
rsync -ruv $SYNC --inplace --exclude piwigo --exclude blog /var/www/html/ /home/stack/www/;
Stack-pwg
Zie voor download hier het volledige script.
Zie voor gedetailleerde procedurebeschrijving voorgaande sectie 'Stack-files'
Hieronder alleen de afwijkende scriptregels:
Transfer met rsync de data van /home/pwgdata (behalve _data/i/galleries) en het websiteprogramma /var/www/html/piwigo naar /home/stack/.
Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaande commando's op de plaats van $SYNC de optie --delete toegevoegd.
De Piwigo data in _data/i zijn alle geschaalde afbeeldingen van de bronimages. Dit is een groot volume data waardoor het schrijven naar de cloud veel tijd vraagt. Voor een retore hebben we deze data echter niet nodig omdat Piwigo deze eenvoudig weer kan genereren van de bronimages.
rsync -ruv --inplace $SYNC --exclude _data/i/galleries/* /home/pwgdata /home/stack/ rsync -ruv --inplace $SYNC --no-links /var/www/html/piwigo /home/stack/;
Stack-wp
Zie voor download hier het volledige script.
Zie voor gedetailleerde procedurebeschrijving voorgaande sectie 'Stack-files'
Hieronder alleen de afwijkende scriptregels:
Transfer met rsync de data van /home/wpdata en het wordpress websiteprogramma /var/www/html/blog naar /home/stack/.
Als het commando gegeven werd met het attribuut 'sync', wordt in onderstaande commando's op de plaats van $SYNC de optie --delete toegevoegd.
De Piwigo data in _data/i zijn alle geschaalde afbeeldingen van de bronimages. Dit is een groot volume data waardoor het schrijven naar de cloud veel tijd vraagt. Voor een retore hebben we deze data echter niet nodig omdat Piwigo deze eenvoudig weer kan genereren van de bronimages.
rsync -ruv --inplace $SYNC --no-links /home/wpdata /home/stack/ rsync -ruv --inplace $SYNC --no-links /var/www/html/blog /home/stack/;
CRON voor Stack backuptaken
Voorgaande scripts worden aangeroepen door een cron. Elke taak wordt 1 keer per maand om 21:00 uur uitgevoerd en elke taak op een andere dag van de maand.
# stack cloud 21.00 uur 1x/maand 0 21 2 * * /usr/local/bin/stack-ben-xps &> /dev/null 0 21 3 * * /usr/local/bin/stack-erica &> /dev/null 0 21 3 * * /usr/local/bin/stack-benovo &> /dev/null 0 21 4 * * /usr/local/bin/stack-files &> /dev/null 0 21 5 * * /usr/local/bin/stack-www &> /dev/null 0 21 6 * * /usr/local/bin/stack-pwg &> /dev/null 0 21 7 * * /usr/local/bin/stack-wp &> /dev/null
Menu voor Stack Backups
Voorgaande Stack scripts worden maandelijks aangeroepen door bovenstaande cron's. Voor de tussentijdse backups of voor opruimwerkzaamheden de synchronisaties roepen we de procedures op aan de shell prompt. Om deze scripts op te nemen in het Utils programma maken we een menuscript aan.
Klik hier om het volledige script te bekijken of te downloaden.
Dit script wordt op zijn beurt aangeroepen door het onderdeel 'Backup' van het Utiliteitenmenu 'Utils'. Hiertoe wordt in het script 'Backup'een extra menuregel toegevoegd.
PIWIGO Restore vanuit Stack
Bij opslag in de TransIP cloud STACK wijzigen de permissies, owners en timestamps.
Volg voor een restore van Piwigo de instructies zoals omschreven in het script 'backuppwg_readme' en nader toegelicht in de Piwigo pagina's
Met een restore uit STACK moeten we echter na het terugzetten van alle bestanden eerst nog de nodige correcties uitvoeren.
- Alle teruggezette bestanden in /home/pwgdata zijn root:root -> zet deze naar apache:apache
# chown -R apache:apache /home/pwgdata
- Alle terugezette betsanden in /var/www/html/piwigo zijn root:root -> zet deze naar apache:apache
# chown -R apache:apache /var/www/html/piwigo
- In de Piwigo rootfolder hebben we links aangemaakt en deze worden niet naar stack gekopiëerd. Bij een restore uit stack moeten we deze weer aanmaken
# cd /var/www/html/piwigo
# ln -s /home/pwgdata/_data _data
# chown apache:apache _data
# ln -s /home/pwgdata/galleries galleries
# chown apache:apache galleries
# ln -s /home/pwgdata/local local
# chown apache:apache local
# ln -s /home/pwgdata/template-extensions template-extensions
# chown apache:apache template-extensions
# ln -s /home/pwgdata/upload upload
# chown apache:apache upload
- Herstel timestamps van de images in /home/pwgdata/galleries met de EXIF data
# find -iname '*.jp*g' -exec jhead -ft {} \;
- Van alle geschaalde images in /home/pwgdata/_data/i wordt geen backup naar Stack gemaakt.
Regenereer deze door Piwigo te openen in de browser. Ga hier naar Beheer -> Foto's -> Bulkbeheer.
Selecteer alle images in Piwigo en kies de optie: Genereer meerdere formaat plaatjes.
Dit kan lang duren, voor mijn 50.000 images duurde het 2 dagen. In zo'n geval is het beter alleen de recente foto's te selecteren (bijvoorbeeld afgelopen jaar) en hiervoor eerst de geschaalden maken. Als dat klaar is kan Piwigo in gebruik genomen worden terwijl op de achtergrond de rest van de geschaalden gemaakt worden.
WORDPRESS Blog Restore vanuit Stack
Bij opslag in de TransIP cloud STACK wijzigen de permissies, owners en timestamps.
Volg voor een restore van Wordpress Blog de instructies zoals omschreven in het script 'backuppwg_readme' en nader toegelicht in de Wordpress pagina's
Met een restore uit STACK moeten we echter na het terugzetten van alle bestanden eerst nog de nodige correcties uitvoeren.
- Alle teruggezette bestanden in /home/wpdata zijn root:root -> zet deze naar apache:apache
# chown -R apache:apache /home/wpdata
- Alle terugezette betsanden in /var/www/html/blog zijn root:root -> zet deze naar apache:apache
# chown -R apache:apache /var/www/html/blog
- In de Blog folder wp-content hebben we een link aangemaakt en deze wordt niet naar stack gekopiëerd. Bij een restore uit stack moeten we deze weer aanmaken
# cd /var/www/html/blog/wp-content
# ln -s /home/wpdata/uploads uploads (zie ook Wordpress Installeren)
# chown apache:apache uploads
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 een 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 of de images-backup gemaakt (opgehaald).
Zie voor details Exploring Linux RaspBerry Pi Backup-Server