29. Jan 2020 |

WordPressi backupi tegemine (bash script)

Varukoopia tegemine enda WordPressi lehest ei ole nii keeruline kui vÔib tunduda.

Seoses kasvava vajadusega varukoopiate jĂ€rgi tegin endale selgeks, kuidas bash scripti kasutada. Mul olid varasemalt vajalikud read olemas ja sain neid terminalis kasutada aga selline rea kaupa toimetamine muutus tĂŒĂŒtuks. Google otsing andis sellised vastused:

Aga noh, natuke liiga keerulised minu arust. NB! Kui SSH ĂŒhenduse loomine on sulle vÔÔras, siis Zone helpis on hea juhend. Aga, sul tegelikult ei ole SSHd varukoopia tegemiseks vaja. Piisab ka komplektist: notepad + FTP + cron töö (iseteeninduses). Samas, katsetamiseks ja hiljem nt lahtipakkimiseks on siiski SSH mugavam.

📌 NB! See varukoopia tegemise juhend töötab standardse WP installi puhul. Muudel juhtudel (nagu nĂ€iteks see) ma ei ole seda katsetanud.

Scripti sisu

Echo asjad panin tooltipideks, et terminalis vaikus ei oleks terve aja 🙂 Kui andmebaas on suur, siis selle export ja pakkimine vĂ”tab omajagu aega. Eeldus on, et scripti fail on ĂŒhe kausta jagu madalamal kui WP install. Antud nĂ€ites on WP install kaustas /htdocs.

#!/bin/bash
echo "Backupi tegemine algas!"
cd htdocs
echo "Andmebaasi export algas..."
wp-cli db export
echo ""
echo "Andmebaasi export tehtud!"
cd ..
echo "Alustasin pakkimist..."
tar czf "$(date +"%Y%m%d")_veebileht.tar.gz" htdocs/
echo "Pakkimine tehtud!"
rm htdocs/*.sql
echo "Andmebaas kustutatud!"
echo "Backupi tegemine lÔpetatud."

Selle ĂŒlal oleva sisu salvestad nĂ€iteks backup.sh failina, kĂ€ivitad eelpool toodud kĂ€sureaga ja ongi kĂ”ik. Mida mingi rida teeb?

3. rida – liigub kausta, kus on WP install.
5. rida – teeb andmebaasist koopia ja paneb selle WP installi kausta. Zones piisab wp db export, Veebimajutuses on vaja wp-cli db export.
6. rida – prindib tĂŒhja rea terminali 🙂 ilu pĂ€rast.
8. rida – liigub ĂŒhe kausta jagu madalamale
10. rida – teeb tar.gz formaadis koopia WP installi kaustast, kus sees on ka andmebaasi koopia. Faili nimi kujul YYYYMMDD_failinimi.tar.gz. Kui peaksid selle varukoopia tegemise nĂ€iteks cron tööga automatiseerima, siis iga pĂ€ev on erinev faili nimi. Stackoverflowst leiab mingi juhendi, kuidas kellaaeg ka sisse panna soovi korral.
12. rida – kustutab andmebaasi koopia (kĂ”ik *.sql failid WP installi kaustast), sest noh, ei jĂ€ta selliseid asju vedelema.

NB! Zones ei sellist lihtsat varianti .sh kÀivitamiseks nagu pildil nÀidatud. Seal on vaja faili 2. reale lisada ${0%/*} vÔi 3. reale panna tÀielik teekond alates /tmp kaustast, kus script tegelikult kÀivitatakse. Lisaks on kÀsk iseteeninduses selline:

/bin/bash [[$D2ND_A]]/script.sh

ja scripti failile on vaja teha terminalis: chmod +x script.sh (sest script peab olema executable)

Veelkord: See path, mis Zone iseteeninduses mÀÀrad on tĂ€ispikk kataloog, kus script asub. Sinna ei tehta vaikimisi “cd”, see on lihtsalt muutuja, mida kasutada, et nĂ€iteks kui partitsioon peaks muutuma, siis muutujas lĂ€heb partitsioon ise Ă”igeks. Cron kĂ€ivitatakse ~/tmp kataloogis. KĂ€surealt vĂ”ib proovida ise cd ~/tmp ja seal sees /data/…/script.sh kĂ€ivitada. See on siis sama olukord, nagu crontab seda kĂ€ivitaks.

Kuidas .sh faili teha?

Notepadiga teed faili (kui muud tööriista ei ole harjunud kasutama) ja hiljem muuda lihtsalt faili laiend Ă€ra 🙂

Scripti kÀivitamine

KÀsk scripti kÀivitamiseks (koos sisselogimisega) on Zones selline:

ssh virt5713@neti.ee "bash domeenid/www.neti.ee/neti.sh"

Veebimajutuses selline:

ssh -p 1022 vhost57175ssh@pood.eu "bash pood.sh"

.sh faili path sÔltub sellest, kuhu sa parasjagu sisse logimisega satud. Zone.ee ja Veebimajutuse kÀsud on pisut erinevad (aga mÔlemal on iseteeninduses juhendid olemas. See teeb korraga sisselogimise ja scripti kÀivituse. Kui oled juba sisse loginud ja .sh failiga samas kaustas, siis piisab lihtsalt:
bash failinimi.sh

Regulaarse varukoopia tegemiseks (nt ĂŒle pĂ€eva) on hea mĂ”te kasutada regulaartöid ehk cron töid, mida on lihtne seadistada iseteenindusest. See tĂ€hendab, et script pannakse tööle sinu poolt mÀÀratud ajal. Veebimajutuses nĂ€eb see vĂ€lja nĂ€iteks nii.

Kuidas lahti pakkida

Lahti pakkimise osa on mul siin olemas kÀsuridade kaupa. Win10 arvutis mul seda lihtsalt 7zipiga nÀiteks lahti pakkida ei Ônnestunud aga serveris tuleb kenasti nÀiteks sellise kÀsureaga:

tar -xzvf archive.tar.gz dir/

Kuidas kokku pakkida (excludega)

tar -zcvf "$(date +"%Y%m%d")_occo.tar.gz" --exclude=node_modules occo/

NB! Suurte failihulkade lahtipakkimisel ole ettevaatlik. Ma ĂŒkskord pakkisin Magento (~60 tuhat faili) serveri root folderisse lahti muude asjade sekka. TĂŒkk aega oli koristamist 😀

Leave a Reply

Your email address will not be published.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.