Tag backup af din Ubuntu server til ekstern FTP server

Det er vigtigt at have backup af sin side, også selvom man har en VPS eller egen server hvor det er dig og dine der står for alt.

Jeg kan godt lide backup, så jeg har rigtigt meget af det, og altid i flere systemer på samme tid, hosten har en backup af det hele, hver uge, denne tjekker jeg selv tit. Så er der den lokale backup vi har på vores server, den er daglig, den bliver ikke tjekket så tit. Også er der denne som bliver lagt over på en ekstra server jeg har, det er super billigt at købe en ekstra server til sådan noget her, særligt hvis man i forvejen hoster nogen andre sider på en ekstern host. En ekstern backup giver dig meget mere sikkerhed, fordi du så slet ikke er afhængig af din host, når alt går galt.

Scriptene har nogen fejl, de bruger FTP dette ville jeg gerne opgradere til sFTP med noget mere sikkerhed på, men da den ekstra server jeg bruger ikke understøtter SFTP bruger jeg kun ukrypteret FTP til dette. jeg har heller ikke begrænset det, så den bliver bare ved med at lægge backups over på din eksterne server, og sletter dem aldrig igen.

Koden er skrevet i shell script hvilket betyder du kan køre det på rigtigt mange Linux servere. Du kan også køre dem med cronjobs så du kan gøre det hele automatisk.

Her er FTP backup scriptet til dine filer.

#!/bin/bash

#tar the files into one file
FILE=backup_`date +%d%m%Y`.tar.gz
tar cvf - /mappen/der/skal/tages/backup/af|gzip > $FILE

#ftp the file to another server

HOST='sub.webhost.dk'
USER='BrugerID'
PASSWD='dinlækrekode'

ftp -n $HOST <
quote USER $USER
quote PASS $PASSWD
binary
put $FILE
quit
END_SCRIPT
rm $FILE
exit 0

Her er scriptet til MYSQL backupen:


#!/bin/bash
#tar the files into one file
FILE=sqlbackup_`date +%d%m%Y`.tar.gz
mysqldump -u DBBRUGER -pDBKODE DBNAVN > mysqldump.sql
tar cvf - mysqldump.sql|gzip > $FILE

#ftp the file to another server

HOST='sub.webhost.dk'
USER='BrugerID'
PASSWD='dinlækrekode'

ftp -n $HOST <
quote USER $USER
quote PASS $PASSWD
binary
put $FILE
quit
END_SCRIPT
rm $FILE
rm mysqldump.sql
exit 0

Du skal køre: chmod +x /path/to/yourscript.sh for at få lov til at køre det, efter dette kan du teste det hele med: /path/to/yourscript.sh

For at ligge det ind som et cron job skal du bruge Root' brugerens cron, fordi disse ting som regel kræver sudo rettigheder.
sudo crontab -u root -e

Her kan du frit sætte hvor tit det hele skal køre, vi har sat det til en gang om ugen for filerne og dagligt for databasen.

Du kan også downloade filerne

I filerne skal du erstatte: sub.webhost.dk, BrugerID, dinlækrekode og med den med MYSQL backup skal du også erstatte: DBBRUGER,  DBKODE og DBNAVN

Fil backup shell scriptet: ftpbackup.sh

MYSQL backup scriptet: sqlbackup.sh

Du du sikret at din host går ned og at din normale backup ikke virker