Backup Server::Scripts

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.

Naar index

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

Naar index

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

Naar index

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

Naar index

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

Naar index

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

Naar index

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

Naar index

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

Naar index

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.

Naar index

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;

Naar index

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'

Naar index

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

Naar index

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

Naar index

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

Naar index