Backup Server::Scripts
Index | ||
UTILS menu script | ||
Mount-SSD | ||
Samba-share | ||
Thuisserver-backup | ||
Testserver-backup | ||
Images-backup | ||
Pi-sysback | ||
Stats | ||
Logs | ||
Upgrades | ||
Overige scripts | ||
Mount-scripts | ||
Wake on LAN | ||
Pistatus |
De Backup-Server is z.g.n. 'Headless' en er wordt naast het via SSH werken aan de commandolijn ook gebruik gemaakt van 'bash scripts' als programma's met een opeenvolging van commando's waarmee de diverse taken uitgevoerd worden.
Script 'UTILS'
Het script 'utils' presenteert een menu met de diverse taken.
Met het commando # sudo utils wordt het Utilities menu getoond met daarin de beschikbare keuzes.
Voordat het menu getoond wordt controleert het script of alle benodigde bestanden in '/usr/local/bin' wel aanwezig zijn. Als één of meer bestanden missen stopt het script met vermelding van de missende bestanden. Alleen als alle bestanden gevonden worden gaat het script verder met het openen van het menu.
Klik hier om het 'utils' script te bekijken.
Bijzonderheden:
3) #case $opt1 in 3 # ******************************************************************************************* # * Menuoptie 3: Maak Backups van Thuisserver Vault * # ******************************************************************************************* thuisserver-backup | tee -a /var/log/backup/thuisserver-backup.log; utils;; 4) #case $opt1 in 4 # ******************************************************************************************* # * Menuoptie 4: Maak Backups van Testserver Vault * # ******************************************************************************************* testserver-backup | tee -a /var/log/backup/testserver-backup.log; utils;; 5) #case $opt1 in 5 # ******************************************************************************************* # * Menuoptie 5: Maak Backups van Macrium Reflect PC Images * # ******************************************************************************************* images-backup | tee -a /var/log/backup/images-backup.log; utils;;
Procedure:
Als de 'thuisserver-backup' uitgevoerd wordt via de CRON wordt de verbose output naar een logbestand geschreven.
Als we backups handmatig vanuit 'UTILITIES BACKUPSERVER' uitgevoerd worden gaat de verbose output ten eerste naar de console. Door de pipe
| tee -a /var/log/backup/xxx-backup.log wordt de output ook naar het betreffende logbestand geschreven.
Optie 1: Mount SSD
Mount SSD is een script voor het koppelen/ontkoppelen van de SSD.
Deze menuoptie kan ook direct vanaf de prompt aangeroepen worden met commando: # sudo mount-ssd
Klik hier om het 'mount-ssd' script te downloaden.
mount-ssd script
- Het script is feitelijk een toggle. Als de SSD gemount is de optie te ontkoppelen en als de SSD niet gemount is de optie te koppelen.
- De ssd backup drive is per default niet gemount en dus airgapped t.o.v. het thuisnetwerk.
- Eerst wordt gecontroleerd of de SSD mogelijk nog gekoppelt is, in dat geval de vraag of er ontkoppeld moet worden.
- Indien gekoppeld:
Er wordt gecontroleerd of de mount nog door een proces gebruikt wordt.
In dat geval volgt er een waarschuwing niet te ontkoppelen om een crash van het nog lopende proces te voorkomen.
Vervolgens wordt de optie geboden de SSD toch te ontkoppelen (umount).
- Indien niet gekoppeld:
Er wordt de optie geboden de SSD te mounten (koppelen)
Optie 2: Samba-share
Samba-share is een script waarmee een gedeelde map middels het Samba protocol gedeeld wordt op het thuisnetwerk naar o.a. Windows-PC's.
Deze gedeelde map (share) kan gebruikt worden om een netwerk Windows-PC te restoren met backup bestanden die opgeslagen zijn op de SSD drive (die we vanzelfsprekend niet delen).
Zie Backup-Server::Samba > Algemeen
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo samba-share
Klik hier om het 'samba-share' script te downloaden.
samba-share script
- Het script is feitelijk een toggle. Als Samba actief is wordt geadviseert deze te deactiveren en als Samba niet aktief is, de optie deze op te starten.
- Samba is per default niet beschikbaar net zoals de SSD drive waarop de gedeelde map /store/share staat.
- Samba niet aktief:
Optie wordt geboden Samba te starten en SSD te koppelen.
- Samba aktief:
Waarschuwing Samba alleen in een ransomvrij netwerk te gebruiken en de service zo snel mogelijk te sluiten
De enige optie hier is sluiten. Als verkozen wordt niet te sluiten dan keert de waarschuwing terug.
Om aan de prompt te kunnen werken (om bv. de benodigde bestanden in de share te plaatsen) zal een extra console geopend moeten worden
Optie 3: Thuisserver-backup
Homeserver-Backup is een script waarmee backups gemaakt worden van de backups op de thuisserver.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo thuisserver-backup
Klik hier om het 'thuisserver-backup' script te downloaden.
thuisserver-backup script
Zie voor gedetailleerde beschrijving: Backup-Server::Backup en Restore > Thuisserver-Backup
Optie 4: Testserver-backup
Homeserver-Backup is een script waarmee backups gemaakt worden van de backups op de thuisserver.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo testserver-backup
Klik hier om het 'testserver-backup' script te downloaden. Zie voor details Optie 3: Thuisserver-backup
Optie 5: Images-backup
Met het script 'images-backup' worden backups gemaakt van de Windows-PC's Macrium Reflect Images en de Raspberry Pi Image die opgeslagen zijn op de Admin PC.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo images-backup
Klik hier om het 'images-backup' script te downloaden.
Images-backup script
Zie voor gedetailleerde beschrijving: Backup-Server::Backup en Restore > Images-Backup
Optie 6: Pi-sysback
Met het script 'pi-sysback' wordt een tarbal gemaakt van het OS van de Raspberry PI en opgeslagen op de SSD in de map /store/pi-sysback/
Doe dit in ieder geval elke keer voordat er wijzigingen/upgrades aangebracht gaan worden en vervolgens opnieuw als alles na de wijzigingen goed werkt.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo pi-sysback
Klik hier om het 'pi-sysback' script te downloaden.
Images-backup script
Zie voor gedetailleerde beschrijving: Backup-Server::Backup en Restore > PI-Sysback
Optie 7: Stats
Met het script 'stats' wordt een statusrapport van de Backup-Server weergegeven.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo stats
Klik hier om het 'stats' script te downloaden.
STATS script
Het onderstaand script spreekt voor zich
#!/bin/bash
echo;
echo;
tijd=$(date +%d/%m/%Y-%X);
echo "Raspberry Status "$tijd;
echo "===========================================================================";
echo;
vcgencmd measure_temp;
echo;
vcgencmd measure_volts;
echo;
pistatus;
echo;
echo "===========================================================================";
echo "Status Samba:";
systemctl status smbd | grep "Loaded";
systemctl status smbd | grep "Active";
echo "===========================================================================";
echo "Status mount SSD:";
if mountpoint -q "/store"; then
echo " SSD is mounted";
else
echo " SSD is not mounted";
fi
echo "===========================================================================";
echo;
read -n 1 -p "Press any key to continue..." key
echo;
Het commando 'pistatus' gebruikt het 'pistatus' script om de diverse resultaten op te halen
Optie 8: Logs
Met het script 'logs' worden logs gepresenteerd die gemaakt worden door de mainserver-backup en images-backup processen.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo logs
Klik hier om het 'logs' script te downloaden.
LOGS script
Het onderstaand script spreekt voor zich.
# ******************************************************************************** # * LOGS script voor Raspberry BackupServer. Ben Makkink 30 juli 2024 * # * Selectiemenu van weer te geven backup logs. * # ******************************************************************************** # #!/bin/bash clear; echo; echo " ============================== LOGS BACKUPSERVER ==============================="; echo; echo " -1 THUISSERVER-BACKUP LOG"; echo " -2 TESTSERVER-BACKUP LOG"; echo " -3 IMAGES-BACKUP LOG"; echo; echo " ================================================================================"; opt1=; while [ -z $opt1 ] ;do echo -n " Kies optienummer of Q om te stoppen: "; read opt1; case $opt1 in [123qQ]) opt1=$opt1 ;; *) opt1=; utils;; esac done case $opt1 in [qQ]) clear; exit;; 1) echo; clear; less +G /var/log/backup/thuisserver-backup.log; logs;; 2) echo; clear; less +G /var/log/backup/testserver-backup.log; logs;; 3) echo; clear; less +G /var/log/backup/images-backup.log; logs;; esac
less +G
Met het 'less +G' wordt het bestand weergegeven doorgespoeld tot het einde.
Optie 9: Upgrade
Met het script 'upgrade' worden beschikbare packages upgrades weergegeven met de optie deze te installeren.
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # sudo upgrade
Klik hier om het 'upgrade' script te downloaden.
UPGRADE script
Als eerste wordt de Message Of The Day (MOTD) weergegeven met daarin o.a. het aantal beschikbare updates.
Als er upgrades beschikbaar zijn maken we allereerst een backup van het systeem met het script 'pi-sysback'
(ER is hier de optie het proces te stoppen).
# Maak systeembackup
echo;
echo " Systeembackup wordt nu gemaakt";
pi-sysback;
echo;
Vervolgens worden de beschikbare upgrades in een lijst weergegeven
# Geef lijst van upgrades echo " Volgende upgrades voor geïnstalleerde packages zijn beschikbaar:"; apt list --upgradable; echo;
Ook nu wordt opnieuw de optie geboden de upgrades niet uit te voeren.
Als upgrades uitgevoerd moeten worden:
echo -n " Nu alle beschikbare upgrades uitvoeren? Y/N: "; read yn; case $yn in [Nn]) echo; echo " Upgrade gecanceld."; echo " Individuele package upgrades kunnen uitgevoerd worden met commando:"; echo " # apt install"; echo; echo -n " Druk om door te gaan."; read foo; echo; echo; exit;; [Yy]) echo; apt upgrade;
Tijdens de uitvoering van dit commando verschijnt voor de laatste keer de vraag of de upgrades echt uitgevoerd moeten worden.
Als dit bevestigend beantwoord wordt:
- Worden de upgrades uitgevoerd
- Worden
overbodig geworden dependencies verwijderd
- Wordt het apt cache geleegd
- En als laatste
de MOTD gereset
apt upgrade; # Remove Dependency Packages That Are No Longer Needed echo; echo " Verwijder dependencies die niet meer nodig zijn."; apt --purge autoremove; echo; echo " Clean APT Cache"; # Clean apt Cache apt clean; echo; # Update Static Motd - Dynamic Folder File /etc/update-motd.d/20-update echo " Update Static Motd - Dynamic Folder File /etc/update-motd.d/20-update"; run-parts /etc/update-motd-static.d;
Overige scripts
Tijdens het ontwikkelen van de scripts voor de Backup-Server zijn er enkele eenvoudige scripts (tijdelijk) gebruikt.
Omdat deze bij onderhoud, etc. best nog wel eens van pas kunnen komen zijn deze bewaard in /usr/local/bin
Het script 'wakeup' wordt gebruikt om de Admin-PC te wekken in het script 'images-backup'
Mount-scripts
mnt-ssd
Klik hier om script te downloaden
# Script voor handmatig mounten van /store drive # bug systemd still uses old version fstab systemctl daemon-reload; mount UUID=138d237d-dae1-4c0f-8246-b766b1d33737 /store; if mountpoint -q "/store"; then echo "de store drive is gemount"; else echo "de mount van de store drive is niet gelukt"; fi
Als het commando # mount gegeven wordt komt het OS altijd met een waarschuwing:
mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload.
Hiervoor heb ik geen oplossing gevonden, dus voorlopig elke keer voor een mount het commando: systemctl daemon-reload;
umnt-ssd
Klik hier om script te downloaden
# Script voor handmatig unmounten van /store drive umount -l /store; if mountpoint -q "/store"; then echo "de unmount van de store drive is niet gelukt"; else echo "de unmount van de store drive is gelukt"; fi
Wake On Lan
Het script 'wakeup' wordt gebruikt om de Admin-PC te wekken in het script 'images-backup'
# *********************************************************************** # * WAKEUP Ben Makkink 05-07-2024 * # *********************************************************************** # * Dit script is voor Wake On Lan via het ping commando in het Backup * # * Server script 'images-backup'. Met dit ping commando wordt voordat * # * een backup van een PC wordt gestart geverifieerd dat er communicatie* # * met deze PC is. Is dit niet zo dan wordt er een WOL uitgevoerd. * # * 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 * # *********************************************************************** #!/bin/bash ARG1=$1 # -c1 ARG2=$2 # -w5 WAKEHOST=$3 # $host ping $ARG1 $ARG2 $WAKEHOST >>/dev/null 2>&1; if [ $? -ne 0 ]; then etherwake $WAKEHOST; sleep 30; ping $ARG1 $ARG2 $WAKEHOST >>/dev/null 2>&1; if [ $? -ne 0 ]; then exit 1 fi fi exit 0
Pistatus
Het script 'pistatus' wordt gebruikt door het stats script voor het weergeven van de Raspberry Pi status.
#!/bin/bash STATUS=$(vcgencmd get_throttled | sed -n 's|^throttled=\(.*\)|\1|p') if [[ ${STATUS} -ne 0 ]]; then echo "" if [ $((${STATUS} & 0x00001)) -ne 0 ]; then echo "Power is currently Under Voltage" elif [ $((${STATUS} & 0x10000)) -ne 0 ]; then echo "Power has previously been Under Voltage" fi if [ $((${STATUS} & 0x00002)) -ne 0 ]; then echo "ARM Frequency is currently Capped" elif [ $((${STATUS} & 0x20000)) -ne 0 ]; then echo "ARM Frequency has previously been Capped" fi if [ $((${STATUS} & 0x00004)) -ne 0 ]; then echo "CPU is currently Throttled" elif [ $((${STATUS} & 0x40000)) -ne 0 ]; then echo "CPU has previously been Throttled" fi if [ $((${STATUS} & 0x00008)) -ne 0 ]; then echo "Currently at Soft Temperature Limit" elif [ $((${STATUS} & 0x80000)) -ne 0 ]; then echo "Previously at Soft Temperature Limit" fi echo "" else echo "No abnormal conditions have been detected" fi