WordPressin varmuuskopio koostuu kahdesta asiasta: sivustosi tiedostoista (kuvat, teemat, lisäosat) ja tietokannasta (tekstit, asetukset). Molemmat tarvitaan sivuston palauttamiseen ja siten molemmat täytyy myös varmuuskopioida.
Tämä ohje kuvaa edistyneille käyttäjille tarkoitettua menetelmää, jossa varmuuskopio otetaan suoraan komentoriviltä. Se edellyttää myös webhotellia, joka tarjoaa SSH-pääsyn.
Helpompi ja useimmille käyttäjille sopivampi vaihtoehto on varmuuskopioida WordPress käyttäen jotain yhtä monista varmuuskopiointiin soveltuvista lisäosista. Eräs suositeltava lisäosa on helppokäyttöinen All-in-One WP Migration and Backup ja se on yleensä riittävä vaihtoehto.
Varmuuskopion ottaminen
Vaihe 1: Avaa komentorivi
Komentorivi on ohjelma, jonka avulla voit käskyttää joko paikallista tietokonettasi tai palvelinta kirjoittamalla tekstikomentoja. Komentorivin käyttö vaatii hieman teknistä osaamista ja tarkka käyttötapa riippuu käyttöjärjestelmästäsi.
- Windows: Avaa Komentokehote tai PowerShell (löytyy valmiiksi Windows 10:stä ja uudemmista). Vaihtoehtoisesti voit käyttää PuTTY-sovellusta tämän ohjeen mukaisesti: Yhdistäminen webhotelliin SSH-yhteydellä
- Mac ja Linux: Avaa Pääte (tai englanniksi Terminal)
Vaihe 2: Kirjaudu palvelimelle
Kirjoita komentoriville SSH-komento yhteystietoinesi. Komento on muotoa ssh <käyttäjänimi>@<palvelin>, esimerkiksi ssh u999999@sfp1/2/3/X.shellit.org. Löydät tarvitsemasi käyttäjätunnuksen sekä palvelinosoitteen hallintapaneelista. Mikäli käytät PuTTY:a, seuraa edellä mainittua ohjetta.
Vaihe 3: Luo varmuuskopiointiskripti
Luo backup.sh niminen tiedosto ja kopioi siihen ohjeen lopusta löytyvä varmuuskopiointiskripti. Voit luoda tiedoston esimerkiksi nano-tekstieditorilla komentamalla nano backup.sh. Liitä sitten skriptin sisältö. Tallenna skripti painamalla ctrl + X ja seuraamalla ohjeita.
Vaihe 4: Aja tallentamasi skripti webhotellin juuressa komennolla:
sh backup.sh public_html
Skripti luo kotihakemistoon hakemiston ”backups” (jos sitä ei jo ole) ja laittaa sinne .zip-tiedoston, joka sisältää tiedostot, sekä tietokannan hakemistosta, joka on määritetty ajetussa komennossa. Tässä esimerkissä oletettiin, että sivustosi sijaitsee kansiossa ”public_html”. Mikäli kansio on jokin muu, korvaa se em. komentoon. Varmuuskopio tallennetaan nimelläe ”hakemisto_30.11.2023_130250.zip” eli esim. ”public_html_30.11.2023_130250.zip”
Varmuuskopion palautus
Vaihe 1: Siirry ”backups”-hakemistoon
cd ~/backups
cd tarkoittaa ”change directory” eli vaihda kansiota. ~/backups tarkoittaa backups-kansiota kotihakemistossasi.
Vaihe 2: Pura varmuuskopiopaketti
unzip public_html_30.11.2023_130250.zip
(korvaa tiedoston nimi omalla varmuuskopiopaketin nimellä)
Varmuuskopiopaketin purkamisen jälkeen backups-hakemistossa on public_html -kansio (tai muu kansio, jos sivustosi ei sijaitse public_html-kansiossa) ja tietokanta erikseen esim. 30.11.2023_130249.sql nimisenä.
Vaihe 3: Siirrä sivuston tiedostot
Siirrä ”public_html”-hakemisto (tai jokin muu kansio, jos sivustosi kansio ei ollut public_html) haluamaasi paikkaan (yleensä kotihakemistoon) tällä komennolla:
mv ~/backups/public_html ~/public_html
mv tarkoittaa ”move” eli siirrä tiedosto. Tämä siirtää public_html-kansion takaisin paikalleen.
Vaihe 4: Palauta tietokanta
Tämän jälkeen tuo tietokanta varmuuskopiosta ajamalla seuraavat komennot tässä järjestyksessä:
Siirry ensin public_html-kansioon komennolla cd ~/public_html
Tyhjennä tietokanta:
wp db reset
Tämä pyytää vielä vahvistuksen
Are you sure you want to reset the 'u999999C2' database? [y/n] y
ja antaa onnistuessa ilmoituksen
Success: Database reset.
Tuo tietokanta varmuuskopiosta:
wp db import ~/backups/30.11.2023_130249.sql
Tämä antaa myös onnistuessa ilmoituksen
Success: Imported from '/home/u12345/backups/30.11.2023_130249.sql'.
Tämän jälkeen kannattaa tarkistaa sivuston toimivuus.
Varmuuskopiointiskripti (backup.sh)
#!/bin/bash
# Check if a folder name is provided
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <wordpress_folder>"
exit 1
fi
# Define the WordPress folder and backup folder
wordpress_folder=$1
backup_folder="$HOME/backups"
# Create backup folder if it does not exist
if [ ! -d "$backup_folder" ]; then
echo "Creating backup folder at $backup_folder"
mkdir -p "$backup_folder"
fi
# Export the WordPress database
echo "Exporting WordPress database..."
dbfilepath="$(date +%d.%m.%Y_%H%M%S).sql"
wp db export "$dbfilepath" --path="$wordpress_folder"
# Check if the database export was successful
if [ ! -f "$dbfilepath" ]; then
echo "Database export failed. Exiting."
exit 1
fi
# Create a zip archive of the WordPress folder and the database dump
backup_file="$backup_folder/$(basename "$wordpress_folder")_$(date +%d.%m.%Y_%H%M%S).zip"
echo "Backing up $wordpress_folder and database to $backup_file"
zip -r "$backup_file" "$wordpress_folder" "$dbfilepath"
rm -f "$dbfilepath"
echo "Removed temporary database export $dbfilepath"
echo "Backup completed successfully, .zip -file saved as $backup_file"