Du er her: Hjem --> Annet --> Blog --> Backup og restore av WordPress hjemmeside

Backup og restore av WordPress hjemmeside

Jeg har en liten WordPress hjemmeside jeg vedlikeholder. Dersom webserveren krasjer (eller det blir brann, tyveri, oversvømmelse, siden blir hacket...) risikerer jeg å miste alle dataene og innleggene på siden - mye arbeid. Så jeg ønsker å jevnlig ta backup - slik at dersom dataene mistes kan jeg iløpet av relativt kort tid gjenskape hjemmesiden på en ny server, med alt innhold inntakt.

Wordpress består av en database og vanlige filer. Vi må ta backup av begge deler for å kunne gjenskape siden. Det er i databasen alle innleggene ligger så denne er sannsynligvis viktigst. Vi begynner med databasen.

Backup bør alltid settes opp slik at det går automatisk - fordi det er lett at det oppstår feil dersom det er manuelle steg.

Backup og restore av databasen

Det er flere måter å ta backup av en WordPress database.

Jeg benytter den siste metoden fordi den krever ingen flerer programmer enn det som allerede er installert - så holder man miljøet rent og oversiktlig. Det er også den raskeste måten når man har lært hvordan det gjøres.

Backup

Hjemmesiden ligger på en webserver hos Domeneshop.

  1. Logg inn på webserveren over SSH.
  2. kjør kommandoen:mysqldump DATABASENAVN -uBRUKERNAVN -hDATABASESERVERNAVNFULLYQUALIFIED -p > filnavn.sql. Du må nå oppgi database passordet. Backupfilen filnavn.sql genereres.
  3. Last ned backup filen filnavn.sql med ftp til en annen maskin, lokalisert et annet sted enn webserveren, slik at man er beskyttet mot tyveri, brann, oversvømmelse.

Man kan lage en komprimere database backup hvis man istedet kjører mysqldump DATABASENAVN -uBRUKERNAVN -hDATABASENAVN.mysql.domeneshop.no -p | gzip > filnavn.sql.gz.

Restore

Har dessverre ikke prøvet dette enda selv.

https://mariadb.com/kb/en/library/mysqldump/
Restoring: To restore a backup created with mysqldump, use the mysql client to import the dump, for example:
mysql dbname < mydbdump.sql
mysql -u root -p dbname < mydbdump.sql
Gjenopprette database fra backup
https://domene.shop/faq?id=108
Unntak: hvis du tok backup med mysqldump, så kan ikke dette programmet selv brukes til å gjenopprette med. Du kan bruke annen programvare, f.eks. ved å kjøre backupfilen som et vanlig SQL-script.
https://www.sitepoint.com/back-up-restore-wordpress-databases/

Backup og restore av filene

Backup

  1. Logg inn på webserveren over SSH.
  2. Kjør kommandoen tar -cvf 01div/minfil10290626.tar www/. Backupfilen minfil20190626 genereres. (c=create tar archive, v=verbose, f=file, tar=tape archive)
  3. Last ned backup filen med ftp til en annen maskin.

For å istedet lage en komprimert backupfil, kjør kommandoen: tar -cvpzf 01div/backupwp10290626.tar.gz www/ (p=arkivfiler får samme permissions som originale filer, z=gzip komprimering)

Restore

Kjør kommandoen tar -xvf minfil10290626.tar. Backupfilen minfil20190626 regenereres i stående katalog. (x=extract)

Samme kommando om arkivet også er komprimert med gzip:tar -xvf minfil10290626.tar.gz. Backupfilen minfil20190626 regenereres i stående katalog. (x=extract)

Oppdatering 26. oktober 2020: restore forsøk

Idag testet jeg endelig restore.

Jeg har en WordPress side helsetypen.no som er hostet hos Domeneshop. Jeg kjøpte domenet stoolguy.com hos domeneforhandleren one.com, altså en annen leverandør. Jeg ønsket å restore en backup av helsetypen.no til wordpress på stoolguy.com på one.com webserver.

Jeg tok backup av både filer og database som beskrevet ovenfor. Dette er noe som skjer daglig ved hjelp av et egenprodusert script. Scriptet logger seg inn på domeneshop serveren og tar backup av wp database og filer til to filer, og laster de to filene ned til en katalog på min arbeidsstasjon. Dersom webhotellet til Domeneshop bli hacket eller på annen måte blir utilgjengelig vil jeg sannsynligvis klare å få nettsiden opp igjen. Det er dette jeg skal teste idag.

Jeg måtte kjøpe en pakke til 80 kr/mnd hos one.com for å få nok funksjonalitet på webhotellet til ssh tilgang. Mye dyrere enn domeneshop. Det gikk greit å scp de to filene opp til webhotellet.

Det var enkelt å restore wp filene, med tar -xcv kommandoen.

Man må editere wp-config.php filen med nytt navn på database osv.

Man måtte installere mysql databaseserveren i one.com arbeidspanalet. Etter at dette var gjort måtte jeg lage databaser også i panelet, klarte ikke å gjøre det med mysql kommandoer, tror ikke det var rettigheter for det.

Jeg fikk pass til SSH og SFTP tilgang, Abc12345. Jeg laget:

databasenavn: db01

user: stoolguy_comdb01

pw: db01pass

For å kople til databasen: mysql -u stoolguy_com01db -p01dbpass

NB: ikke mellomrom mellom -p og passordet

show databases;

Leser db backup inn i ny database: mysql -h stoolguy.com.mysql stoolguy_com01db -u stoolguy_com01db -p01dbpass < 2020-09-06-18-30-01helsetypendb.sql

Det var referanser til helsetypen mange steder. Jeg editerte både backupfilen for filer og backupfilen for databasen slik at helsetypen.no ble erstattet med stoolguy.com

How to use sed to replace string in textfile.

stoolguy.com@one.com~/01psbup$ sed -i 's/helsetypen.no/stoolguy.com/g' 2020htdb02.sql

Testet at det ikke var flere referanser med stoolguy.com@one.com~/01psbup$ cat 2020htdb02.sql | grep helsetyp | less -S

Og så leste jeg den editerte sql filen inn i databasen på nytt.

Nå fungerte det å gå inn på stoolguy.com i browseren og man fikk opp helsetypen nettsiden. Forsiden fungerte. Dessverre fungerte det ikke å gå inn på blogginnlegg. Her var URL avhengig av datoen for når posten var skrevet. Av en eller annen grunn fungerte ikke dette. Vet ikke helt hvorfor. Mulig det hadde fungert dersom domenet man skulle restore til var helsetypen.no, altså samme som man kom fra. Jeg vil se litt mer på dette en annen gang.

Referanser

  1. mysqldump/mariadb dokumentasjon
    https://mariadb.com/kb/en/library/mysqldump/
  2. tar kommando eksempelr
    https://www.tecmint.com/18-tar-command-examples-in-linux/
Telefon: 67 20 71 21 / 92 60 51 57 Logo-tema