Home

 

Server::Utility Scripts

Naar index

UTILITY SCRIPTS

Vooral voor het maken van backups naar de STACK cloud en voor aanvullende opties voor de fotobeheer- en presentatieprogrammas Piwigo en de Wordpress Blog heb ik diverse bash scripts samengesteld die uitgevoerd worden vanaf de shell prompt.
Zie voor linux scripting bijvoorbeeld http://www.freeos.com/guides/lsst/ of zoek met Google: linux scripting

De individuele scripts kunnen rechtstreeks aangeroepen worden of via het script 'utils', dat in feite alleen maar een keuze-menu van de diverse scripts presenteert. Naar verwachting zullen in de toekomst nog meer utility scripts toegevoegd worden.

Naar index

Utilities pakket

Het complete pakket is samengevoegd in utils-bestanden.tar.gz en bevatte op 21/12/2017 de volgende bestanden:

1 utils Utilities hoofdmenu inclusief routine checks.
  |      
2 |-- backup Submenu voor backups van OS, Piwigo, Wordpress en backups naar Stack cloud.
3 | |-- sysback Maken van een backup van het ClearOS Operating System. Script wordt ook gebruikt middels cron.
  | |      
| |-- backuppwg Submenu en script voor backup/synchronisatie van de Piwigo foto-galerij.
| | |-- backuppwg-cron script voor backup van de Piwigo foto-galerij via cron-opdracht.
6 | | |-- backuppwg_readme menuoptie voor weergave van gebruikersinstructies incl. instellen van met cron.
7 | | |-- piwigo-hacks menuoptie voor maken van tarball van alle 'gehackte' PIWIGO bestanden en de originelen.
8 | | |-- piwigo-hacks_readme menuoptie voor weergave van gebruikersinstructies voor piwigo-hacks.
  | |      
| |-- backupwp Submenu en script voor backup/synchronisatie van de wordpress blog.
10 | | |-- backupwp-cron script voor backup van de wordpress blog via cron-opdracht.
11 | | |-- backupwp_readme menuoptie voor weergave van gebruikersinstructies incl. instellen van met cron.
12 | | |-- wordpress-hacks menuoptie voor maken van tarball van alle 'gehackte' Wordpress bestanden en de originelen.
13 | | |-- wordpress-hacks_readme menuoptie voor weergave van gebruikersinstructies voor wordpress-hacks.
  | |      
14 | |-- stackbackup Submenu voor backup/synchronisatie van backups naar de STACK cloud.
15 | |   stack-ben-xps menuoptie voor backup/synchronisatie van PC 'ben-xps' naar cloud.
16 | |   stack-erica menuoptie voor backup/synchronisatie van PC 'erica' naar cloud.
17 | |   stack-files menuoptie voor backup/synchronisatie van servershare 'files' naar cloud.
18 | |   stack-pwg menuoptie voor backup/synchronisatie van piwigo backup naar cloud.
19 | |   stack-wp menuoptie voor backup/synchronisatie van wordpress-blog backup naar cloud.
20 | |   stack-www menuoptie voor backup/synchronisatie van webserver 'www' naar cloud.
  | |      
21 | |-- sysback_restore_readme menuoptie met instructies voor OS-restore m.b.v. gemaakte 'sysback' backups.
  |      
22 |-- pwg-desc Submenu en script voor import uit Excel van fotobeschrijvingen in Piwigo-database.
23 | |-- pwg-desc_readme menuoptie voor weergave van gebruikersinstructies van het fotobeschrijvingen-importprocess.
  |      
24 |-- sql-samples.txt menuoptie naar tekstbestand met diverse handige MySQL commando's met uitleg.
             
       
25 utils_install_readme tekstbestand met installatie instructies voor utilities pakket.
26 demo.mysql-access Voorbeeld .mysql_access bestand met MySQL wachtwoorden voor scripts met SQL.
27 archiveer-host BackupPC script voor het met crons archiveren van backups.
28 wolping script voor het wekken van een netwerk-PC voor BackupPC.
29  logisp script dat middels een cron beschibaarheid van het internet logt.
30 aan sript schakelt een USB powerswitch aan.
31  uit sript schakelt een USB powerswitch uit.

Naar index

Installatie

Naar index

.mysql_access bestand
Enkele 'utils' scripts bevatten MySQL queries waarbij wachtwoorden nodig zijn.
Deze wachtwoorden zijn niet 'hardcoded' in de scripts geplaatst maar worden middels een 'include' statement binnengehaald uit het bestand '.mysql_access', een verborgen bestand dat in dezelfde directory '/usr/local/bin' geplaatst wordt.
Bij de hierboven uitgepakte bestanden bevindt zich het template bestand 'demo.mysql_access'.
Open dit bestand in een editor en vervang <MySQL-rootwachtwoord> en<MySQL-gebruikerwachtwoord> met de wachtwoorden die ingevoerd zijn bij de Piwigo en Wordpress installatie.
Zie ook de Piwigo site Piwigo::Backup en de Wordpress site WORDPRESS::Backup and Restore

MYSQL_PWD_R="<MySQL-rootwachtwoord>"
MYSQL_PASSWORD="<MySQL-gebruikerwachtwoord>"

Sla het berwerkte bestand op als '/usr/local/bin/. mysql_access' en wijzig permissies:
# chown root:root .mysql_access
# chmod 400 .mysqlaccess

Naar index

Utilities Menu

Open 'Utilities' menu: # utils

Met het commando # 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.

Naar index

Optie 1: Server-OS, Piwigo, Wordpress en Stack-cloud backup scripts
Deze menuoptie kan ook direct vanaf de prompt aangeroepen worden met commando: # backup
Dit script opent met een Backup-menu, zie verderop in deze sectie BACKUP voor verdere details.

Naar index

Optie 2: Piwigo Foto bijschriften
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # pwg-desc
Zie voor het complete verhaal de site Piwigo::Foto's Omschrijven

Naar index

Optie 3: MySQL - overzicht handige commando's
Deze menuoptie opent een tekstdocument met een overzicht van Piwigo gerelateerde SQL queries die van pas kunnen komen. Het kan ook gebruikt worden om typo's te voorkomen door de gewenste regel(s) te kopiëren en aan de shell prompt te plakken. Vervang hierbij <MySQL-rootwachtwoord> en <MySQL-gebruikerwachtwoord> door de wachtwoorden zoals ook ingevoerd in bestand '.mysql_access'

Naar index

BACKUP script

Optie 1 van het 'utils' script start het script 'backup'

Met het commando # backup wordt het 'Backup' menu getoond met daarin de beschikbare keuzes.
Ook hier wordt, voordat het menu getoond wordt, gecontroleerd 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 'backup' script te bekijken en/of gebruik Save As om bestand op te slaan.

Naar index

Optie 1: Server OS backup
Met de menu-optie 1 wordt een backup gemaakt van het complete ClearOS Operating System (OS) middels het script 'SYSBACK'.
Dit script wordt al middels een cron regelmatig uitgevoerd, maar er zijn situaties waarin, voor er verder gegaan wordt, het verstandiger is eerst een backup te maken.

Sysback Script
Eenvoudig programmaatje om het OS-systeem van de server als backup op te slaan. Het 'sysback' script wordt door de cron " 0 0 * * 0 /usr/local/bin/sysback &> /dev/null" * #* elke 1e dag van de week om 00.00 uur uitgevoerd. De tar wordt opgeslagen in /vault/sysback. Zie aan het eind de restore informatie
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 variabelen opgeslagen o.a. het pad waar de backups opgeslagen moeten worden (storedir). In deze sectie kan het script dus eenvoudig aangepast worden aan de serverconfiguratie.
Vervolgens wordt van het OS een tarball gemaakt en 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. Daarna wordt gecontroleerd of er een vroegere backup ouder dan 2 weken bestaat en deze wordt verwijderd.

Scriptsectie 'sysback':

# 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 'storedir' en dat de naam krijgt beginnend met de 'timestamp' gevolgd door '-system-backup'. 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 '*system-backup' bestanden die ouder zijn dan 14 dagen en deze worden verwijderd door commando '-exec rm'

Naar index

Optie 2: Piwigo backup/synchronisatie

Optie 2 van het 'backup' menu opent een nieuw script 'backuppwg' met het menu 'Piwigo Backup/Synchronisatie'.
Hier kan gekozen worden voor een backup van alle nieuwe/gewijzigde bestanden of een synchronisatie waarbij bestanden die in de bron niet meer voorkomen ook uit de backup verwijderd worden. Zie verder de sectie Piwigo backup/synchronisatie

Het Piwigo backup menu heeft de volgende opties:

  1. Backup - Kopieer nieuwe/gewijzigde bestanden. Behoud bestanden verwijderd uit bron
  2. Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel
  3. Gebruikersinstructies voor PIWIGO RESTORE en automatisch backup met cron
  4. Piwigo User-Hacks Backup

Naar index

Optie 3: Wordpress backup/synchronisatie

Optie 3 van het 'backup' menu opent een nieuw script 'backupwp' met het menu 'Wordpress Backup/Synchronisatie'.
Hier kan gekozen worden voor een backup van alle nieuwe/gewijzigde bestanden of een synchronisatie waarbij bestanden die in de bron niet meer voorkomen ook uit de backup verwijderd worden. Zie verder de sectie Wordpress backup/synchronisatie

Het Wordpress backup menu heeft de volgende opties:

  1. Backup - Kopieer nieuwe/gewijzigde bestanden. Behoud bestanden verwijderd uit bron
  2. Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel
  3. Gebruikersinstructies voor Wordpress RESTORE en automatisch backup met cron
  4. Wordpress User-Hacks Backup

Naar index

Optie 4: Stack backup/synchronisatie

Optie 4 van het 'backup' menu opent een nieuw script 'stackbackup' met het menu 'Stack Backup'. Dit is een submenu voor backup/synchronisatie van server backups naar de STACK cloud.
Hier kan gekozen worden voor een backup van alle nieuwe/gewijzigde bestanden of een synchronisatie waarbij bestanden die in de bron niet meer voorkomen ook uit de backup verwijderd worden. Zie verder de sectie Stack backup/synchronisatie

Het Stack backup menu heeft de volgende opties:

  1. stack-ben-xps - backup/synchronisatie van PC 'ben-xps' naar cloud
  2. stack-erica - backup/synchronisatie van PC 'erica' naar cloud
  3. stack-files - backup/synchronisatie van servershare 'files' naar cloud
  4. stack-pwg - backup/synchronisatie van piwigo backup naar cloud
  5. stack-wp - backup/synchronisatie van wordpress-blog backup naar cloud
  6. stack-www - backup/synchronisatie van webserver 'www' naar cloud
Naar index

Optie 5: Gebruikersinstructies voor Server RESTORE met een SYSBACK backup

Optie 4 opent het tekstbestand 'sysback_restore_readme' met de gebruikersinstructie voor het restoren van het OS met de door het script 'sysback' gemaakte tarball. Zie hiervoor ook bovenstaande sectie Optie 1: Server OS backup

# ===========================================================================================
# RESTORE SERVER met (secties uit) tarball samengesteld met script SYSBACK
# ===========================================================================================
# Sysback v1.4 23 juni 2017 Ben Makkink
# -------------------------------------------------------------------------------------------
# 1. Bestanden (tarballs) zijn opgeslagen in /vault/sysback
# 2. Tarballs zijn gecreeerd met path vanuit root '/'
# 3. !!! Dus extract (restore) uitvoeren vanuit root '/' !!!
#
# Hier een voorbeeld met een backup met naam: 20151025-sysback.tar.gz
# Gebruik volgende commando's:
# #cd /                                              (extract tarball vanuit root)
# #ls /vault/sysback                                 (haal lijst met bestaande tarballs)
# #tar -tzvf /vault/sysback/20151025-sysback.tar.gz  (lijst van bestanden in een tarball)
# voorbeeld: usr
#            usr/lib64/security/
#            usr/lib64/security/pam_chroot.so
#            etc.
# #tar -tzvf /vault/sysback/20151025-sysback.tar.gz usr/local/bin
# toont lijst van bestanden onder usr/local/bin in de tarball
#
# #tar -xzvf /vault/sysback/20151025-sysback.tar.gz
#                              (restore complete '/' directory en subdirectories)
# #tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr
#                              (restore alleen subdir 'usr' en al z'n subdirectories)
# #tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr/local/bin/sysback
#                              (restore alleen bestand 'sysback')
#
# Als bijvoorbeeld met het laatste voorbeeld de fout gemaakt wordt dit commando niet vanuit
# / (root) te geven maar vanuit /home dan belandt het uitgepakte bestand op
# /home/usr/local/bin/sysback. Dus een hele nieuwe reeks met (sub)dirs op de verkeerde plaats.
#
# Opties van commando tar:
# -c creeer,  -t list,  -x extract, -z zip/unzip naar/van gz,  -v verbose
# -f onmiddellijk gevolgt door de tarball naam.
#
# Restore GRUB
# =============
# 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 met behulp van de installatie USB:
# 1. Plaats monitor en keyboard. Boot computer met installatie USB (gaat automatisch als
#    de boot USB geplaatst is. Selecteer de rescue optie.
# 2. a # sudo su                                       e # grub -install /dev/sda1
#    b # mkdir /mnt/test                               f # exit
#    c # mount -t ext4 -o dev/sda1 /mnt/test           g # umount /mnt/test
#    d # cd /dev/sda1                                  h # reboot (zonder CD)
#
# ===========================================================================================

Klik hier om het complete script te bekijken of te downloaden dmv. Save As

Naar index

Piwigo backup/synchronisatie

Het script 'backuppwg' opent een nieuw script met het menu 'Piwigo Backup/Synchronisatie'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > backup.

Klik hier om het volledige script 'backuppwg' te bekijken of te downloaden middels Save As.

Bestanden waarvan backups gemaakt worden:
Naast het Piwigo programma in /var/www/html/piwigo bevinden de gebruikersbestanden zich in:

Mariadb MySQL database 'piwigo' (wordt geschreven naar subdir 'dbase_dump' van $source_data)
/home/pwgdata/upload   Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden middels een webformulier
/home/pwgdata/galleries Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden middels FTP of lokale filetransfer en synchroniseer methode
/home/pwgdata/_data Map waar de derivaten van de images opgeslagen worden (geschaalde foto's)
/home/pwgdata/local Map met gebruikersaanpassingen in de configuratie van Piwigo gemaakt met de Local Files Editor

Tevens maken we backups van bestanden met code waarin we wijzigingen (hacks) in hebben aangebracht.

Backup vs Synchronisatie
Bij een backup worden alle nieuwe en/of gewijzigde bestanden in de bron naar het doel gekopieerd, maar alle bestanden die niet meer in de bron voorkomen worden bewaard en niet uit het doel verwijderd
Bij een synchronisatie worden daarentegen alle bestanden die niet meer in de bron voorkomen wel uit het doel verwijderd.
Dit wordt bewerkstelligd door aan het commando 'rsync' de optie '--delete' toe te voegen.
Voer deze laatste optie alleen uit als je zeker weet dat in de bron niet (per ongeluk) bestanden verwijderd zijn!

Piwigo dagelijkse backup met cron
De backup van Piwigo wordt tevens dagelijks gemaakt middels het script 'backuppwg-cron', klik hier om het script te bekijken of te downloaden (save as).
Er wordt een backup (zonder delete) uitgevoerd, dus als er per ongeluk Piwigo-data verwijderd zijn dan blijven die in de backup gewoon bewaard.
Zie voor uitleg ook de hiernavolgende sectie Optie1: Backup
Het script wordt dagelijks om 01:01 uur uitgevoerd door navolgende regel toe te voegen met crontab:
1 1 * * * /usr/local/bin/backuppwg-cron &> /dev/null
Bij het uitvoeren van het script wordt ook de datum en tijd van de backup opgeslagen in de naam van een dummybestand.

Naar index

Optie 1: Backup
Klik hier om het volledige script 'backuppwg' te bekijken of te downloaden middels Save As.

Relevante scriptsecties voor Backup:

# Set VARIABLES

# Geef hier aan waar het 'piwigo' programma zich bevindt
source_prog="/var/www/html/piwigo";

# Geef hier aan waar de buiten de webroot geplaatste 'piwigo data' zich bevinden
source_data="/home/pwgdata"

# Geef hier aan waar synchronisatie/backup bestanden opgeslagen moeten worden
storedir="/vault/piwigo/";

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

# Maak de variabele met de datum en tijd van de vorige 'piwigo' backup/synchronisatie
syncfile=$source_data"/synchronisatie*";
lastsync=$(date -r $syncfile +%d/%m/%Y-%X);

echo "Bezig met Export MySQL database 'piwigo'...";
mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > $source_data/dbase_dump/"piwigo-dump"$datestamp".sql";

# Verwijder synchronisatiedatum bestand uit 'source_data'
rm -rf $syncfile;
# Verwijder oude synchronisatiedatum bestanden uit 'storedir'
    find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;;
    touch $source_data"/synchronisatiedatum-"$datestamp;
# Verwijder dbase_dumps in source_data ouder dan 7 dagen
    find $source_data/dbase_dump/ -maxdepth 1 -mtime +7 -name *piwigo-dump* -exec rm {} \;
    case $keuze in
       1) echo "Bezig met Backup van PIWIGO programma (zonder delete)...";
          rsync -avzh $source_prog $storedir;
          echo;
          echo "Backup van PIWIGO data (zonder delete)...";
          rsync -avzh $source_data $storedir;
          echo "Verwijder databasedumps die niet meer in bron voorkomen...";
          rsync -avzh --delete $source_data/dbase_dump $storedir"pwgdata";
          echo;
          echo -n "   Backup afgerond, druk  om terug te gaan naar menu."; read foo;
          backuppwg;;

Naar index

Optie 2: Synchroniseer
Klik hier om het volledige script 'backuppwg' te bekijken of te downloaden middels Save As.

Relevante scriptsectie voor Synchroniseer (zie voor de variabelen bovenstaande scriptsectie):

       2) echo "Bezig met Synchronisatie van PIWIGO programma (met delete)...";
          rsync -av $source_prog --delete $storedir;
          echo;
          echo "Bezig met Synchronisatie van PIWIGO data (met delete)...";
          rsync -av $source_data --delete $storedir;
          echo;
          echo -n "   Synchronisatie afgerond, druk  om terug te gaan naar menu."; read foo;
          backuppwg;;

Naar index

Optie 3: Gebruikersinstructies

Deze optie opent het tekstbestand 'backuppwg_readme' met uitleg over het Piwigo backup/synchronisatie proces en de restore procedures.
Naast de uitleg in 'backuppwg_readme' wordt het Piwigo backup/synchronisatie proces verder in detail beschreven in de site Piwigo::Backup en er zal hier niet verder op ingegaan worden.

Naar index

Optie 4: Piwigo User-Hacks Backup

Deze optie opent het script 'piwigo-hacks' dat opnieuw een menu weergeeft. Klik hier om het script weer te geven en eventueel op te slaan middels Save As

Klik hier om optie 1: de gebruikersinstructies te bekijken en mogelijk op te slaan middels Save As.
In deze instructies wordt uitgelegd wat te doen vóórdat een Piwigo Update uitgevoerd wordt om te zorgen dat eigengemaakte hacks in programmacode bewaard blijven.

De voor opties 2 en 3 zijn de relevante scriptsecties:

echo -n "     Tarball van de eigen gemodificeerde PIWIGO-bestanden maken? Y/N: ";
read yn;
case $yn in
[Yy])
 echo "     De volgende bestanden worden gearchiveerd.";
 echo "     ================================================================================";
 cd /var/www/html/piwigo;  #Ga naar de /piwigo directory
  tar -cvf tmp.tar index.php; #bestanden met eigen bewerkingen naar archief tmp.tar
  tar -rvf tmp.tar include/extra-index.inc.php;
  tar -rvf tmp.tar include/category_default.inc.php;
  tar -rvf tmp.tar themes/Pure_clear_blue/icon/sprite.png;
  tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png;
  tar -rvf tmp.tar admin/site_update.php;
  tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl;
  tar -rvf tmp.tar include/user.inc.php;
  tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png;
  tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl;
  tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl;
  tar -rvf tmp.tar themes/smartpocket/themeconf.inc.php;
  tar -rvf tmp.tar plugins/piwigo-videojs/template/vjs-5-player.tpl;
  tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local.css;
  tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css;
  tar -rvf tmp.tar plugins/ShareAlbum/main.inc.php;
  tar -rvf tmp.tar plugins/ShareAlbum/include/public_events.inc.php;
  tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl;
  tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php;

gzip tmp.tar;  # Comprimeer het bestand met gzip
# Geef een fatsoenlijke naam en locatie aan het bestand
mv tmp.tar.gz /home/pwgdata/hacks/piwigo-hacks.tar.gz;
echo "     ================================================================================";
echo "     PIWIGO bestanden met eigen aanpassingen zijn gearchiveerd in /home/pwgdata/hacks";
echo -n "     Druk  om terug te gaan naar menu."; read foo; piwigo-hacks ;;

*) echo
   echo -n "     Optie gecanceld, druk  om terug te gaan naar menu."; read foo; piwigo-hacks ;;
   esac;;
3)
  yn="n"
   echo;
   echo -n "     Tarball van pre-upgrade *.org PIWIGO-bestanden maken? Y/N: ";
   read yn;
   case $yn in
   [Yy])
    echo "     De volgende bestanden worden gearchiveerd.";
    echo "     ================================================================================";
    cd /var/www/html/piwigo;  #Ga naar de /piwigo directory
     tar -cvf tmp.tar index.php.org;
     tar -rvf tmp.tar include/extra-index.inc.php.org
     tar -rvf tmp.tar include/category_default.inc.php.org;
     tar -rvf tmp.tar themes/Pure_clear_blue/icon/sprite.png.org;
     tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png.org;
     tar -rvf tmp.tar admin/site_update.php.org;
     tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl.org;
     tar -rvf tmp.tar include/user.inc.php.org;
     tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png.org;
     tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl.org;
     tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl.org;
     tar -rvf tmp.tar themes/smartpocket/themeconf.inc.php.org;
     tar -rvf tmp.tar plugins/piwigo-videojs/template/vjs-5-player.tpl.org;
     tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local.css.bck;
     tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css.bck;
     tar -rvf tmp.tar plugins/ShareAlbum/main.inc.php.org;
     tar -rvf tmp.tar plugins/ShareAlbum/include/public_events.inc.php.org;
     tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl.org;
     tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php.org;
    gzip tmp.tar;  # Comprimeer het bestand met gzip

   # Geef een fatsoenlijke naam en locatie aan het bestand
   mv tmp.tar.gz /home/pwgdata/hacks/piwigo-hacks-org.tar.gz;
   echo "     ================================================================================";
   echo "     Originele bestanden voor de hacks zijn gearchiveerd in /home/pwgdata/hacks";

Naar index

Wordpress backup/synchronisatie

Het script 'backupwp' opent een nieuw menu 'Wordpress Backup/Synchronisatie'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > backup.

Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels Save As.

Bestanden waarvan backups gemaakt worden:
Naast het Wordpress programma in /var/www/html/blog bevinden de gebruikersbestanden zich in:

Mariadb MySQL database 'wordpress' (wordt met dit script geschreven naar subdir 'dbase_dump' van /home/wpdata)
/home/wpdata/  Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden

Tevens maken we backups van bestanden met code waarin we wijzigingen (hacks) in hebben aangebracht.

Backup vs Synchronisatie
Bij een backup worden alle nieuwe en/of gewijzigde bestanden in de bron naar het doel gekopieerd, maar alle bestanden die niet meer in de bron voorkomen worden bewaard en niet uit het doel verwijderd
Bij een synchronisatie worden daarentegen alle bestanden die niet meer in de bron voorkomen wel uit het doel verwijderd.
Dit wordt bewerkstelligd door aan het commando 'rsync' de optie '--delete' toe te voegen.
Voer deze laatste optie alleen uit als je zeker weet dat in de bron niet (per ongeluk) bestanden verwijderd zijn!

Wordpress blog dagelijkse backup met cron
De backup van Wordpress blog wordt tevens dagelijks gemaakt middels het script 'backupwp-cron', klik hier om het script te bekijken of te downloaden (save as).
Er wordt een backup (zonder delete) uitgevoerd, dus als er per ongeluk Wordpress blog-data verwijderd zijn dan blijven die in de backup gewoon bewaard.
Zie voor uitleg ook de hiernavolgende sectie Optie1: Backup
Het script wordt dagelijks om 01:01 uur uitgevoerd door navolgende regel toe te voegen met crontab:
1 1 * * * /usr/local/bin/backupwp-cron &> /dev/null
Bij het uitvoeren van het script wordt ook de datum en tijd van de backup opgeslagen in de naam van een dummybestand.

Naar index

Optie 1: Backup
Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels Save As.

Relevante scriptsecties voor Backup:

# Set VARIABLES

# Geef hier aan waar het 'wordpress' programma zich bevindt
source_prog="/var/www/html/blog";

# Geef hier aan waar de buiten de webroot geplaatste 'wordpress data' zich bevinden
source_data="/home/wpdata"

# Geef hier aan waar wordpress-backups opgeslagen moeten worden
storedir="/vault/wordpress/";

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

# Maak de variabele met de datum en tijd van de vorige wordpress backup/synchronisatie
syncfile=$source_data"/synchronisatie*";
lastsync=$(date -r $syncfile +%d/%m/%Y-%X);
    echo "Bezig met Export MySQL database 'wordpress'...";
    mysqldump -uroot -p$MYSQL_PWD_R --opt --databases wordpress > $source_data/dbase_dump/"wp-dump"$datestamp".sql";
    echo;
    rm -rf $syncfile;
# Verwijder oude synchronisatiedatum bestanden uit 'storedir'
    find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;;
    touch $source_data"/synchronisatiedatum-"$datestamp;
# Verwijder dbase_dumps in source_data ouder dan 7 dagen
    find $source_data/dbase_dump/ -maxdepth 1 -mtime +7 -name *wp-dump* -exec rm {} \;
    case $keuze in
       1) echo "Bezig met Backup van Wordpress (zonder delete)...";
          rsync -av $source_prog $storedir;
          echo;
          echo "Bezig met Backup van WPDATA (zonder delete)...";
          rsync -av $source_data $storedir;
          echo "Verwijder databasedumps die niet meer in bron voorkomen...";
          rsync -avzh --delete $source_data/dbase_dump $storedir"wpdata";
          echo;
          echo -n "   Backup afgerond, druk  om terug te gaan naar menu."; read foo;
          backupwp;;

Naar index

Optie 2: Synchroniseer
Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels Save As.

Relevante scriptsectie voor Synchroniseer (zie voor de variabelen bovenstaande scriptsectie):

       2) echo "Bezig met Synchronisatie van Wordpress (met delete)...";
          rsync -av $source_prog --delete $storedir;
          echo
          echo "Bezig met Synchronisatie van WPDATA (met delete)...";
          rsync -av $source_data --delete $storedir;
          echo;
          echo -n "   Synchronisatie afgerond, druk  om terug te gaan naar menu."; read foo;
          backupwp;;

Naar index

Optie 3: Gebruikersinstructies

Deze optie opent het tekstbestand 'backupwp_readme' met uitleg over het Wordpress-blog backup/synchronisatie proces en de restore procedures.
Naast de uitleg in 'backupwp_readme' wordt het Wordpress backup/synchronisatie proces verder in detail beschreven in de site Wordpress::Backup en er zal hier niet verder op ingegaan worden.

Naar index

Optie 4: Wordpress Hacks Backup

Deze optie opent het script 'wordpress-hacks' dat opnieuw een menu weergeeft. Klik hier om het script weer te geven en eventueel op te slaan middels Save As

Klik hier om optie 1: de gebruikersinstructies te bekijken en mogelijk op te slaan middels Save As.
In deze instructies wordt uitgelegd wat te doen vóórdat een Wordppress Update uitgevoerd wordt om te zorgen dat eigengemaakte hacks in programmacode bewaard blijven.

Voor optie 2 is de relevante scriptsectie:

    echo -n "     Tarball van de eigen gemodificeerde WORDPRESS-bestanden maken? Y/N: ";
    read yn;
    case $yn in
     [Yy])
      echo "     De volgende bestanden worden gearchiveerd.";
      echo "     ================================================================================";  
      cd /var/www/html/blog;  #Ga naar de ../blog directory
        tar -cvf tmp.tar wp-config.php; #bestanden met eigen bewerkingen naar archief tmp.tar
        tar -rvf tmp.tar wp-content/themes/layout-builder/functions.php;
        tar -rvf tmp.tar wp-content/themes/layout-builder/content-page.php;
        tar -rvf tmp.tar wp-admin/includes/media.php;
        tar -rvf tmp.tar wp-includes/link-template.php;

      gzip tmp.tar;  # Comprimeer het bestand met gzip
     # Geef een fatsoenlijke naam en locatie aan het bestand
      mv tmp.tar.gz /home/wpdata/hacks/wordpress-hacks.tar.gz;
      echo "     ================================================================================";
      echo "     WORDPRESS bestanden met eigen aanpassingen zijn gearchiveerd in /home/wpdata/hacks";

Voor optie 3 is de relevante scriptsectie:

    echo -n "     Tarball van pre-upgrade *.org WORDPRESS-bestanden maken? Y/N: ";
    read yn;
    case $yn in
     [Yy])
      echo "     De volgende bestanden worden gearchiveerd.";
      echo "     ================================================================================";  
      cd /var/www/html/blog;  #Ga naar de ../blog directory
        tar -cvf tmp.tar wp-config.php.org;
        tar -rvf tmp.tar wp-content/themes/layout-builder/functions.php.org;
        tar -rvf tmp.tar wp-content/themes/layout-builder/content-page.php.org;
        tar -rvf tmp.tar wp-admin/includes/media.php.org;
        tar -rvf tmp.tar wp-includes/link-template.php.org;

      gzip tmp.tar;  # Comprimeer het bestand met gzip

     # Geef een fatsoenlijke naam en locatie aan het bestand
      mv tmp.tar.gz /home/wpdata/hacks/wordpress-hacks-org.tar.gz;
      echo "     ================================================================================";
      echo "     Originele bestanden voor de hacks zijn gearchiveerd in /home/wpdata/hacks";

Naar index

Stack backup/synchronisatie

Het script 'stackbackup' opent een nieuw menu 'Stack Backup'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > backup.

Klik hier om het volledige script 'stackbackup' te bekijken of te downloaden middels Save As.

Backup naar STACK cloud:
Alle voorgaande backups bevinden zich op één en dezelfde fysieke locatie. Het is veiliger als er ook kopiën op een andere locatie bewaard worden.

Hiervoor maken we 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' 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.

Naar index

Server::Backup en Restore
Zie Server::Backup en Restore > Backup naar Stack Cloud voor gedetailleerde uitleg voor de installatie met WebDAV en het gebruik van het programma.
Het backup/synchronisatie programma wordt uitgevoerd d.m.v. scripts die aangestuurd worden met cron's.

De volgende scripts zijn in gebruik:

Naar index

Backupstack menu
Naast de automatische backups middels de cron's kunnen de diverse taken ook manueel uitgevoerd worden vanuit het Backupstack menu.
In dit geval wordt naast de backup optier ook de optie 'synchroniseer' geboden. Zie voor een voorbeeld van het switchen tussen de opties Server::Backup en Restore > Backup naar Stack Cloud > Stack-ben-xps

Voer een synchronisatie alleen uit als de cloud vol begint te lopen en als je absoluut zeker bent dat de serverbackup compleet is.

Naar index

Overige Scripts

Logisp
Met het script 'logisp' wordt getest of er verbinding met het internet (Internet Service Provider) is en gelogd naar het tekstbestand 'isp_log.text' in de webroot. Het logbestand is nu in de browser uit te lezen.

#!/bin/sh
NOW=$(date +"%d/%m/%Y %T")
ping -q -w3 -c1 8.8.8.8
if [ "$?" != 0 ]; then
  echo $NOW: "Geen internettoegang" >> /var/www/html/isp_log.txt
# else
#  echo $NOW: "OK" >> /var/www/html/isp_log.txt
fi

Het script wordt middels een cron uitgevoerd. Voor bijvoorbeeld elke minuut een check voegen we hiervoor met crontab de volgende regel toe:
* * * * * /usr/local/bin/logisp &> /dev/null

Naar index

Archiveer-host
Script om met BackkupPC een archief (tarball) te maken van een RSYNC Backup van een Host. Dit script bevat het commando voor het schedulen met een CRON.
Zie voor nadere uitleg en het script Server::Backup en Restore sectie archiveHost schedulen met script en cron

#!/bin/bash
#***************************************************************************************
#* ARCHIVEER-HOST  Ben Makkink 05-03-2016                                              *
#* 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

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

# Oude tarballs, behalve de laatste worden verwijderd.
find /vault/backuppc/ -maxdepth 1 -mtime +7 -name $arch_host".*" -exec rm {} \;;

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

Naar index

Wolping
Als BackupPC een hostprofiel uitvoert wordt als eerste een ping naar de host (client-PC) gestuurd. Alleen als een ping ontvangen wordt gaat de uitvoering verder. In de BackupPC is de 'PingCmd' gezet op: $pingPath -c1 -w3 $host (Hierbij is $pingPath het pad /bin/ping). Deze entry voor 'PingCmd' wijzigen we 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.
Zie voor nadere uitleg en het script Server::Backup en Restore sectie WOL met BackupPC

Naar index

Aan en Uit
De scripts 'Aan' en 'Uit' worden gebruikt voor de USB Powerswitch die gebruikt wordt om via de prompt op de homeserver de testserver aan, respectievelijk uit te schakelen. Zie voor deze toepassing ExploringLinux::Projecten > USB Netschakelaar

Aan

clewarecontrol -c 1 -d 67507 -as 0 1;
echo "Testserver is aan";

Uit

clewarecontrol -c 1 -d 67507 -as 0 0;
echo "Testserver is uit";

Naar index