Piwigo::Backup
Backup
Algemeen
De Piwigo Fotogalerij wordt regelmatig voorzien van nieuwe foto's en beschrijvingen vanuit de fotoarchief bestanden op het netwerk.
van Piwigo maken we dagelijks een backup naar een fysiek gescheiden harde schijf op de netwerk-bestandsserver. Tevens wordt de complete server, inclusief data, 2x per jaar weggeschreven naar een externe harde schijf.
Piwigo bestaat uit 3 elementen waarvan backups gemaakt moeten worden:
- Het programma in de webroot ../piwigo. Dit gedeelte bevat geen data en bestaat uit het programma met thema, plugins en lokale wijzigingen. Dit gedeelte is onderhevig aan Piwigo updates, plugin updates en eigen hacks.
- De data in /home/pwgdata (Piwigo::Beveiliging > Piwigo data buiten webroot
/galleries : de originele afbeeldingen met mappenstructuur /_data : de geschaalde afbeeldingen, cached data en templates /local : alle eigen lokaal aangebrachte modificaties en wijzigingen /template-extension : de lokaal gemodificeerde templates /upload : afbeeldingen anders geladen dan via /galleries /hacks : tarballs van de eigen 'gehackte' bestanden /dbase_dump : de dump van onderstaande database - De database in MariaDB 'piwigo' met de Piwigo programma instellingen, data structuur, links, omschrijvingen, etc, etc.
Het dagelijkse Piwigo Backup proces op de webserver wordt uitgevoerd met het script ‘backuppwg-cron’ geplaatst op de webserver in /usr/local/bin/. Zie hiervoor ook Server: Utility Scripts
Script Backuppwg-cron
In de scripts 'backuppwg' en 'backuppwg-cron' wordt een MySQL commando gebruikt dat een wachtwoord vereist. Deze is niet 'hard-coded' in het script opgenomen. Het script bevat een 'include' statement dat verwijst naar een verborgen bestand '.mysql_access' dat in dezelfde directory /usr/local/bin/ geplaats moet zijn als het 'backuppwg' script.
Bekijk hier de template 'demo.mysql_access'. Kopieer en open dit bestand in een editor en vervang <MySQL-rootwachtwoord> en <MySQL-piwigo_ww> door de wachtwoorden ingevoerd in hoofdstuk Piwigo::Installeren > Creëer MariaDB database voor Piwigo.
Sla het bestand op als '.mysql_access' en zet permissies naar root:root en chmod 400.
Het script resulteert in een backup van het geïnstalleerde Piwigo programma ../piwigo, een backup van de data directorie '/home/pwgdata' en de bijbehorende MariaDB database 'piwigo'. Tevens wordt een bestandje aangemaakt met in de naam de datum en tijd van de backup.
#!/bin/bash #********************************************************************************************* #* BACKUPPWG-CRON Versie 2.0 Script voor autom. synchronisatie (backup) van de Piwigo data * #* Ben Makkink 09 december 2016 * #********************************************************************************************* #* BELANGRIJK: Dit script wordt gebruikt door CRON voor het dagelijks maken van een * #* automatische backup. CRON gebruikt echter per default 'sh' ipv 'bash'. * #* Als script geschreven is in 'bash' werkt het mogelijk niet onder CRON. Corrigeer dit * #* door op de eerste regel van het script '#!/bin/bash' te plaatsen. Nu wordt het script * #* uitgevoerd is 'bash' ondanks dat het door CRON in 'sh' aangeroepen wordt. * #* ******************************************************************************************* # * Verifieer dat de voor script 'backuppwg-cron' benodigde bestanden in /usr/local/bin # * aanwezig zijn. # # * 1: 'mysql_access' met Mysql inloggegevens clear; ok="y"; if [ ! -f /usr/local/bin/.mysql_access ] then echo; echo " Bestand 1 : '.mysql_access' mist in /usr/local/bin!"; ok="n"; fi # * 2: 'backuppwg_readme' met 'backuppwg' gebruikersinstructies if [ ! -f /usr/local/bin/backuppwg_readme ] then echo; echo " Bestand 2 : 'backuppwg_readme' mist in /usr/local/bin!"; ok="n"; fi # * Bericht als bestand(en) missen if [ $ok == "n" ] then echo; echo " ==============================================================================="; echo " Installeer eerst bovenstaande bestand(en), BACKUPPWG-CRON heeft deze nodig!!"; echo " ==============================================================================="; echo -n " Drukom verder te gaan: "; read foo; echo; exit; #exit script omdat bestanden missen in /usr/local/bin/ fi # ***************************************************************************************** # * Als alle benodigde bestanden in /usr/local/bin/ bestaan; start het script # ***************************************************************************************** # include verborgen bestand met setting van de MYSQL wachtwoorden # Als dit script door CRON gebruikt wordt mag het pad naar .mysql_access niet relatief zijn # CRON werkt vanuit de root en het pad naar het 'include' bestand moet dus 'full' zijn. . /usr/local/bin/.mysql_access # 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 backups opgeslagen moeten worden storedir="/vault/piwigo/"; # Geef hier aan welk datumformaat gebruikt moet worden voor de bestandsnaam datestamp=$(date +%Y%m%d); # Maak dump van Piwigo database naar /home/pwgdata # =================================================== # Maak een dump (export) van de mysql database 'piwigo' genaamd 'piwigo-dump.sql' in # /home/pwgdata/dbase_dump mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > $source_data/dbase_dump/"piwigo-dump"$datestamp".sql"; # De datum van synchronisatie houden we bij met de naam van een bestand (zonder inhoud) # Verwijder laatste bestand syncfile=$source_data"/synchronisatie*"; rm -rf $syncfile; # Maak nieuw synchronisatiedatum bestand aan in 'source_data' touch $source_data"/synchronisatiedatum-"$datestamp; # Verwijder oude synchronisatiedatum bestanden uit 'storedir' find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm '{}' \; # Verwijder dbase_dumps in source_data ouder dan 7 dagen find $source_data/dbase_dump/ -maxdepth 2 -mtime +7 -name *piwigo-dump* -exec rm {} \; # Backup alleen piwigo-programma naar $storedir # Symbolic links worden gecopieerd en niet de achterliggende data # ============================================================================================ rsync -avzh $source_prog $storedir; # Backup 'pwgdata' rsync -avzh $source_data $storedir; # Verwijder databasedumps die niet meer in bron voorkomen. rsync -avzh --delete $source_data/dbase_dump $storedir"pwgdata"; # ============================================================================================ # Zie BACKUPPWG_README voor uitleg en restore instructies # ============================================================================================
CRON
Het script 'backuppwg-cron wordt middels een CRON elke dag uitgevoerd. Zie http://nl.wikipedia.org/wiki/Cronjob voor gedetailleerde uitleg over CRON of #man crontab voor het maken en bewerken van de crontab bestanden.
PIWIGO Backup/Synchronisatie
Bij de 'Backup' of 'Synchronisatie' worden nieuwe/gewijzigde bestanden naar de backupdisk geschreven.
Bij 'Synchronisatie worden als in de bron bestanden verwijderd zijn deze ook uit het doel verwijderd.
Bij 'Backup' blijven deze bestanden in het doel bewaard. De dagelijkse cron met het script 'backupwp' voert een 'Backup' uit.
Script Backuppwg
Het script 'backuppwg' wordt op de hand uitgevoerd met het commando aan de prompt': # backuppwg
Bekijk hier het complete script inclusief inline uitleg.
'UTILS' Utilitiespakket: Het script ‘backuppwg’ is op zijn beurt geïntegreerd in het in Server::Utility Scripts beschreven pakket, met diverse scripts voor onderhoud, backup, etc. Deze bash scripts voorzien in menu's met de diverse keuzes en gebruikersinstructies.
Het 'backuppwg' script opent een menu met de volgende opties:
- Backup - Kopieer nieuwe/gewijzigde bestanden. Behoudt bestanden verwijderd uit bron
- Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel
- Gebruikersinstructies voor Wordpress RESTORE en automatisch backup met cron
- Wordpress User-Hacks Backup
- Maak een snapshot van huidige backup
- Reset permissies websites in '/var/www/' naar 'apache:lanshare' dirs '755' files '644'
Optie 1: Backup
Kopieer nieuwe/gewijzigde bestanden. Behoudt bestanden verwijderd uit bron
Relevante regels in het script (zie Optie 3: Gebruikersinstructies voor meer detail):
# 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 Piwigo-backups opgeslagen moeten worden storedir="/vault/piwigo/"; # 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 gallery backup/synchronisatie syncfile=$source_data"/synchronisatie*"; lastsync=$(date -r $syncfile +%d/%m/%Y-%X); mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > $source_data/dbase_dump/"piwigo-dump"$datestamp".sql"; # Verwijder dbase_dumps in source_data ouder dan 7 dagen find $source_data/dbase_dump/ -maxdepth 2 -mtime +7 -name *piwigo-dump* -exec rm {} \; touch $source_data"/synchronisatiedatum-"$datestamp; rsync -av $source_data $storedir; rsync -av $source_prog $storedir; rsync -avzh --delete $source_data/dbase_dump $storedir"pwgdata";
- Als eerste wordt er een dump vande database 'piwigo' met de naam 'piwigo-dump<timestamp>.sql' gemaakt en opgeslagen bij de data in /home/pwgdata/dbase_dump
- Vervolgens wordt er een bestandje met als naam de datum en tijd van het maken van de backup, deze wordt ook in /home/pwgdata geplaatst.
- Daarna wordt een backup gemaakt van de data van items 1 en 2 in /home/pwgdata en weggeschreven naar de folder /vault/piwigo op een fysiek gescheiden schijf.
- Vervolgens wordt een backup gemaakt van het programma in de webroot onder ../piwigo en ook weggeschreven naar de folder /vault/piwigo.
- Als laatste worden de databasedumps in /home/pwgdata gesynchroniseerd met de dumps in /vault/piwigo
Optie 2: Synchroniseer
Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel.
Relevante regels in het script (zie Optie:Gebruikersinstructies voor meer detail):
# 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 Piwigo-backups opgeslagen moeten worden storedir="/vault/piwigo/"; # 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 gallery backup/synchronisatie syncfile=$source_data"/synchronisatie*"; lastsync=$(date -r $syncfile +%d/%m/%Y-%X); mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > $source_data/dbase_dump/"piwigo-dump"$datestamp".sql"; # Verwijder dbase_dumps in source_data ouder dan 7 dagen find $source_data/dbase_dump/ -maxdepth 2 -mtime +7 -name *piwigo-dump* -exec rm {} \; touch $source_data"/synchronisatiedatum-"$datestamp; rsync -av --delete $source_data $storedir; rsync -av --delete $source_prog $storedir;
- Als eerste wordt er een dump vande database 'wordpress' gemaakt en opgeslagen bij de data in /home/pwgdata/dbase_dump
- Vervolgens wordt er een bestandje met als naam de datum en tijd van het maken van de backup, deze wordt ook in /home/pwgdata geplaatst.
- Daarna wordt een backup gemaakt van de data van items 1 en 2 in /home/pwgdata en weggeschreven naar de folder /vault/piwigo op een fysiek gescheiden schijf. Maar worden bestanden die niet meer in de bron voorkomen ook verwijderd uit het doel (--delete)
- Als laatste wordt een backup gemaakt van het programma in de webroot onder ../piwigo en ook weggeschreven naar de folder /vault/piwigo. Maar worden bestanden die niet meer in de bron voorkomen ook verwijderd uit het doel (--delete)
Optie 3: Gebruikersinstructies
De selectie van deze optie opent onderstaand tekstbestand met uitleg over de backup en restoreprocedures.
Klik hier om het bestand in de browser te openen en eventueel elders op te slaan.
backuppwg_readme ********************************************************************************************* * BACKUPPWG Version 1.0 Script voor automatische synchronisatie (backup) van de PIWIGO data * * Ben Makkink 31 december 2015 * ********************************************************************************************* WERKING VAN HET SCRIPT EN RESTORE INSTRUCTIES BELANGRIJK: Het script 'backuppwg' wordt gebruikt door CRON voor het dagelijks maken van een automatische backup. CRON gebruikt echter per default 'sh' ipv 'bash'. Als een script geschreven is in 'bash' werkt het mogelijk niet onder CRON. Corrigeer dit door op de eerste regel van het script '#!/bin/bash' te plaatsen. Nu wordt het script uitgevoerd in 'bash' ondanks dat het door CRON in 'sh' aangeroepen wordt. HET SCRIPT BACKUPPWG 1- Eerst wordt geverifieerd dat de voor script 'backuppwg' benodigde bestanden in /usr/local/bin aanwezig zijn. 2- Vervolgens wordt een 'include' gedaan van het verborgen bestand .mysql_access met de setting van de MYSQL wachtwoorden. Als dit script door CRON gebruikt wordt mag het pad naar .mysql_access niet relatief zijn. CRON werkt vanuit de root en het pad naar het 'include' bestand moet dus 'full' zijn, dwz: . /usr/local/bin/.mysql_access 3- Nu worden nog enkele variabelen gezet waarna het eigenlijke programma begint: Maak een dump (export) van de mysql database 'piwigo' genaamd 'piwigo-dump.sql' in /home/pwgdata/dbase_dump. Door het toevoegen van de variabele $datestamp in de bestandsnaam wordt voorkomen dat bij een nieuwe backup de vorige dbasedump wordt overschreven. Vooral van belang bij de dagelijkse cron backup # mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > /home/pwgdata/dbase_dump/"piwigo-dump"$datestamp".sql"; 4- De datum van synchronisatie houden we bij door een 'datestamp' te verwerken in de naam van een leeg bestand '/home/pwgdata/synchronisatiedatum-yyyymmdd' 5- In de bron worden de databasedumps die ouder dan 7 dagen zijn verwijderd # find $source_data/dbase_dump/ -maxdepth 1 -mtime +7 -name *piwigo-dump* -exec rm {} \; 6- Nu maken we de backups van /var/www/html/piwigo en /home/pwgdata naar /vault/piwigo : # rsync -avzh /var/www/html/piwigo /vault/piwigo; (symbolic links naar /home/pwgdata worden gekopieerd, maar niet de achterliggende data) # rsync -avzh /home/pwgdata /vault/piwigo; (alle piwigo data inclusief MySQL-dump van de 'piwigo' database) 7- Als laatste worden databasedumps uit de storedir verwijderd die niet meer in de bron voorkomen. # rsync -avzh --delete $source_data/dbase_dump $storedir"pwgdata"; BACKUP en geen SYNCHRONISATIE! Bij de automatische geplande backup is het beter geen synchronisatie met de optie 'verwijder uit doel als niet meer in bron' uit te laten voeren, want voor je het weet is ook alles in de backup weg. Doe een synchronisatie met --delete alleen handmatig via het script 'backup' bijvoorbeeld 1 x per jaar. En dan alleen als je absoluut zeker bent dat de brondata compleet zijn. CRON Gebruik het backuppwg script met een cron om bijvoorbeeld wekelijks uit te voeren. Gebruik commando # crontab -e en voeg toe in /var/spool/cron/root: 1 1 * * 0 /usr/local/bin/backuppwg &> /dev/null Bovenstaande betekent: 01:01 uur 's ochtends op 1e dag van de week of 1 1 * * * /usr/local/bin/backuppwg &> /dev/null zelfde tijden maar nu dagelijks. =========================================================================================== PIWIGO restore: =========================================================================================== 1- Voor een restore is het beter te zorgen dat het oude bestand verwijderd is. 2- Als het PIWIGO programma zelf nog wel werkt is het niet nodig deze te vervangen door de backup. 3- Om een restore te doen van PIWIGO is het voldoende de huidige lege of corrupte data directories /home/pwgdata/_data, /galleries, /update en /local te verwijderen en te vervangen door hun respectievelijke laatste backups in /vault/piwigo/pwgdata 4- Vervolgens moet de Piwigo database hersteld worden. Voer onderstaande commando's uit voor het droppen van de oude MariaDB piwigo database en het importeren van de sql-dump in de backup: a. cd naar /vault/piwigo/pwgdata/dbase_dump met het laatste goede bestand 'piwigo-dump .sql' b. # mysqladmin -uroot -p' ' drop piwigo (verwijdert de oude 'piwigo') c. # mysql -uroot -p' ' < piwigo-dump .sql (importeert de backup 'piwigo') Hiermee is PiWiGo weer hersteld naar de situatie van de laatste backup. NOTE 1: is het rootwachtwoord gegeven bij de activering van MySQL NOTE 2: SYMBOLIC LINKS naar backups. Het kopieren van de bestanden van de backup naar /home/pwgdata kan enkele uren duren. Om snel in de lucht te zijn kunnen we in plaats van bovenstaande stap 3 eerst in het piwigo programma de symbolic links naar de probleembestanden verwijderen en deze vervangen met symbolic links naar de backups. Bijvoorbeeld voor ../piwigo/galleries: # cd /var/www/html/piwigo # unlink galleries # ln -s /vault/piwigo/pwgdata/galleries galleries Na hetzelfde te gedaan te hebben voor _data, upload, template-extension en local gaan we verder met stap 4 en op deze manier is Piwigo weer beschikbaar. Nu kopieren we de fysieke backupbestanden naar Piwigo met een andere naam, bijvoorbeeld: # cp -aR /vault/piwigo/pwgdata/galleries /home/pwgdata/bck-galleries Op dezelfde manier kopiëren we _data, upload, template-extension en local. Vervolgens stoppen we piwigo en verwijderen we de symbolic links: # unlink galleries Zo ook voor _data, upload, template-extension en local Als alle links verwijderd zijn hernoemen we de fysieke bestanden: # rename bck-galleries galleries bck-galleries Zo ook voor bck_data, bck-upload, bck-template-extension en bck-local Herstel nu de oorspronkelijke symbolic links # ln -s /home/pwgdata/galleries galleries Zo ook voor _data, upload, template-extension en local Hiermee is PiWiGo weer hersteld naar de situatie van de laatste backup! NOTE 3: De backup kan ook gebruikt worden voor een (her)installatie van PIWIGO op een andere server of nieuwe ClearOS installatie. Let hierbij op de vereiste settingen in /etc/php.ini: memory_limit>=100M upload_max_filesize>=100M output_buffering = Off post_max_size>=100M =========================================================================================== PIWIGO PROGRAMMA restore =========================================================================================== Mocht het PIWIGO programma corrupt zijn of het is in z'n geheel niet geinstalleerd, dan volstaat het om uit de backup in /vault/piwigo de directory 'piwigo' te copieren naar /var/www/html/ (# cp -a om permissies en owners te behouden ===========================================================================================
Optie 4: User-Hacks
Deze optie start het script 'piwigo-hacks' voor het samenstellen van tarballs van alle programmabestanden in Piwigo die 'gehackt' zijn door de gebruiker (voor en na de eigen wijzigingen).
(Zie Piwigo::Wijzigingen > Hacks)
Het script piwigo-hacks opent met een menu met volgende keuzes:
- Gebruikersinstructies RESTORE User Hacks
- Maak 'piwigo-hacks' tarball (pre-upgrade hacks)
- Maak 'piwigo-hacks-org' tarball (pre-upgrade originelen)
- Check 'piwigo-hacks' na een Piwigo update/upgrade op overschrijving
- Templatebestanden vergelijken
Keuze 1 opent een tekstbestand met onderstaande gebruikersinstructies.
Klik hier om het bestand in de browser te openen en eventueel elders op te slaan.
PIWIGO-HACKS Gebruikers instructies ================================================================================ Voordat in Piwigo de eigen modificaties gemaakt worden, worden van de betreffende bestanden kopien gemaakt van het origineel en voorzien met de extentie .org. Deze bestanden zijn dus originelen zoals uit de doos. Na een upgrade moet nu eerst vastgesteld worden of deze 'uit de doos' bestanden niet gewijzigd zijn. Maak voor een upgrade een tarball van deze .org files. Gebruik eventueel het bestand piwigo-hacks-org.tar.gz om na de upgrade deze pre-upgrade .org originelen terug te zetten. Vergelijk nu de upgrade originelen met de pre-upgrade originelen met de extentie .org. Alleen als deze gelijk zijn kan piwigo-hacks.tar.gz gebruikt worden om de eigen wijzigingen terug te zetten. Als er verschillen zijn dan moeten van deze specifieke bestanden de eigen wijzigingen in de upgrade op de hand uitgevoerd worden. Vergelijken van bestanden (na de upgrade en voor terugzetten eigen wijzigingen) ================================================================================= 1 Maak een nieuwe directory ../temp aan 2 Kopieer alle bestanden .org en hun nieuwe tegenhangers naar deze ../temp directory. 3 Vergelijk de oude met de nieuwe dus bv. index.php en index.php.org # comm -13 file1 file2 > file3 Hierbij is file1 de oude, file2 de nieuwe en file3 het output bestand -1 verberg regels uniek in file1 -2 verberg regels uniek in file2 -3 verberg regels die in beide gelijk zijn Bovenstaand commando resulteert in file3 met regels die in het nieuwe bestand niet meer voorkomen. # comm -23 file1 file2 > file3 Resulteert in regels die alleen in het nieuwe voorkomen, dus toegevoegd. ================================================================================= Alternatief ================================================================================= Gebruik het Windows programma EXAMDIFF om beide bestanden te vergelijken. Als de Windows PC Samba toegang heeft tot de webroot (website) dan zijn de beide bestanden eenvoudig te openen en worden de verschillen duidelijk getoond. ================================================================================= Alleen als er bij alle bovenstaande bestanden geen verschillen bestaan dan kunnen de eigen bestanden in piwigo-hacks.tar.gz teruggezet worden. In dit geval laten we de bestanden met .org extentie gewoon staan voor een volgende upgrade. Als er wel verschillen in een bestand zijn, dan moet na de upgrade van Piwigo een kopie van dit bestand gemaakt worden met een .org extentie waarna het origineel bewerkt moet worden met de eigen wijzigingen. ================================================================================= MAAK DUS VOOR EEN UPGRADE EERST DE TARBALLS 'piwigo-hacks.tar.gz' en 'piwigo-hacks-org.tar.gz'.
Keuze 2 maakt vóór de upgrade een tarball van de bestanden met de hacks
Relevante code:
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 admin/site_update.php; tar -rvf tmp.tar include/user.inc.php; tar -rvf tmp.tar include/category_default.inc.php; tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl; tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png; tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl; tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png; 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/sharealbum_functions.inc.php; tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl; tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php; tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl; 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;
Keuze 3 maakt vóór de upgrade een tarball van de originele bestanden (als uit de doos)
Relevante code:
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 admin/site_update.php.org; tar -rvf tmp.tar include/user.inc.php.org; tar -rvf tmp.tar include/category_default.inc.php.org; tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl.org; tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png.org; tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl.org; tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png.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/sharealbum_functions.inc.php.org; tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl.org; tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php.org; tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl.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;
Keuze 4 faciliteert een snelle check van gehackte bestanden die met een update/upgrade mogelijk overschreven zijn.
Na het maken van een hack wordt een kopie bewaard met de extentie .bck. Dit *.bck bestand heeft dezelfde timestamp als het bestand met de hack.
Als na een upgrade de timestamps verschillen betekent dit dat het bestand met de hack overschreven is door de upgrade.
De hack moet in dat geval opnieuw aangebracht worden.
Relevante code:
cd /var/www/html/; echo "ls -l piwigo/index*"; ls -l piwigo/index*; echo -n " Drukom verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/extra-index*"; ls -l piwigo/include/extra-index*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/admin/site_update.php*"; ls -l piwigo/admin/site_update.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/user.inc.php*"; ls -l piwigo/include/user.inc.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/category_default.inc.php*"; ls -l piwigo/include/category_default.inc.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/Fotorama/template/fotorama-content.tpl*"; ls -l piwigo/plugins/Fotorama/template/fotorama-content.tpl*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/Fotorama/fotorama/fotorama@2x.png*"; ls -l piwigo/plugins/Fotorama/fotorama/fotorama@2x.png*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl*"; ls -l piwigo/plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/BatchDownloader/template/images/zip.png*"; ls -l piwigo/plugins/BatchDownloader/template/images/zip.png*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/template/vjs-5-player.tpl*"; ls -l piwigo/plugins/piwigo-videojs/template/vjs-5-player.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local.css*"; ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local.css*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css*"; ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/main.inc.php*"; ls -l piwigo/plugins/ShareAlbum/main.inc.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/include/sharealbum_functions.inc.php*"; ls -l piwigo/plugins/ShareAlbum/include/sharealbum_functions.inc.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/admin/template/config.tpl*"; ls -l piwigo/plugins/ShareAlbum/admin/template/config.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/admin/config.php*"; ls -l piwigo/plugins/ShareAlbum/admin/config.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/rv_menutree/template/rv_menutree_categories.tpl*"; ls -l piwigo/plugins/rv_menutree/template/rv_menutree_categories.tpl*; # echo -n " Druk om verder te gaan: "; read foo; echo; echo " ================================================================================"; echo " Einde check PIWIGO hack-bestanden"; echo -n " Druk om terug te gaan naar menu "; read foo; piwigo-hacks;;
Keuze 5:Templatebestanden vergelijken
Van enkele templates zijn templates afgeleid met eigen configuraties. De templates hoeven dus niet 'gehackt' te worden maar worden vervangen door de aangepaste templates."; echo "
Bij een Piwigo upgrade worden templates mogelijk gewijzigd/overschreven. De eigen lokale template blijft weliswaar bewaard, maar mist mogelijk aanpassingen/toevoegingen in de nieuwe Piwigo template."; echo "
Om dit te monitoren maken we van de originel template die gebruikt is bij het maken van de eigen lokale template een backup bestand met extensie .bck.
Als na een upgrade de timestamps tussen het origineel en de backup verschillen is het zaak de eigen template opnieuw aan te maken maar nu op basis van de laatste Piwigo template.";
echo -n " Template-bestanden nu vergelijken? Y/N: "; read yn; case $yn in [Yy]) echo; echo cd /var/www/html/piwigo/themes/default/template/; echo "ls -l *header.tpl*"; ls -l *header.tpl*; ls -l /home/pwgdata/template-extension/*header.tpl* echo -n " Druk eenom verder te gaan: "; read foo; echo; echo "ls -l *identification.tpl*"; ls -l identification.tpl*; ls -l /home/pwgdata/template-extension/*t_identification.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *index.tpl*"; ls -l *index.tpl*; ls -l /home/pwgdata/template-extension/*index.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *mainpage_categories.tpl*"; ls -l *mainpage_categories.tpl*; ls -l /home/pwgdata/template-extension/*mainpage_categories.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *menubar_identification.tpl*"; ls -l *menubar_identification.tpl*; ls -l /home/pwgdata/template-extension/*menubar_identification.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *picture.tpl*"; ls -l *picture.tpl*; ls -l /home/pwgdata/template-extension/*picture.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *thumbnails.tpl*"; ls -l *thumbnails.tpl*; ls -l /home/pwgdata/template-extension/*thumbnails.tpl* echo -n " Druk een om verder te gaan: "; read foo;
Optie 5: Maak snapshot van huidige backup
Bij elke dagelijkse 'Backup' of 'Synchronisatie' van Piwigo worden de laatste bestanden opgeslagen.
Als er bij het experimenteren fouten ontstaan dan worden die ook in de backup meegenomen. De laatst goedwerkende versie wordt hiermee overschreven.
Daarom is het raadzaam eerst een snapshot van de backup te maken voordat we aan het sleutelen gaan. Deze snapshot wordt opgeslagen in een nieuwe map in "$storedir" met vermelding van de timestamp.
Klik hier om het volledige script 'pwg-snapshot' te bekijken of te downloaden middels Save As.
# Geef hier aan welk datumformaat gebruikt moet worden voor de betandsnaam van de backup
datestamp=$(date +%Y%m%d) # Maak variabele met pad waar de snapshot opgeslagen moet worden
snapshotdir=$storedir"snapshot-van-backup-"$datestamp"/"; # Maak snapshot # ============= mkdir $snapshotdir; cp -a $source_prog $snapshotdir; mkdir $snapshotdir"pwgdata/"; cp -a $source_data"/dbase_dump" $snapshotdir"pwgdata"; cp -a $source_data"/hacks" $snapshotdir"pwgdata"; cp -a $source_data"/local" $snapshotdir"pwgdata"; cp -a $source_data"/template-extension" $snapshotdir"pwgdata"; cp -a $source_data"/upload" $snapshotdir"pwgdata";
Optie 6: Reset permissies websites
Klik hier om het volledige script 'reset-website-permissions-users' te bekijken of te downloaden middels Save As.
chown -R apache:lanshare /var/www/; chmod -R 755 /var/www/; find /var/www/html -type f -name '*' -exec chmod 644 '{}' \;