Zum Inhalt springen

Cronjob Aufgabenplaner

Um eine Sicherung der kompletten Webseite, inklusive Datenbanken, auf meine Diskstation zu machen, habe ich mir folgendes Script geschrieben.

Im Webhostingcontrolpanel könnt ihr im Aufgabenplaner die Daten wie im angegeben Bild eintragen und somit einen Cronjob erstellen. In meinem Beispiel startet das Script jeden Montag um 6:00 Uhr.

Bitte den Pfad zum Backup Script anpassen (Befehl)

Script zum sichern der Webseite "backup.sh"

#!/bin/sh

THESITE="" #Name des 1. Backups
THEDB="" # Name der 1. Datenbank
THEDBUSER="" # Benutzername der 1. Datenbank
THEDBPW="" # Passwort der 1. Datenbank
THEDATE=`date +%d%m%y%H%M`
THESITE1="" #Name des 2. Backups
THEDB1="" # Name der 2. Datenbank
THEDBUSER1="" # Benutzername der 2. Datenbank
THEDBPW1="" # Passwort der 2. Datenbank
THESITE2="" #Name des 3. Backups
THEDB2="" # Name der 3. Datenbank
THEDBUSER2="" # Benutzername der 3. Datenbank
THEDBPW2="" # Passwort der 3. Datenbank
HOST="" #Host aller Datenbanken

# Sicherung der MySQL Datenbanken
mysqldump -h $HOST -u $THEDBUSER -p${THEDBPW} $THEDB | gzip > /httpdocs/backup/dbbackup_${THEDB}_${THEDATE}.bak.gz
mysqldump -h $HOST -u $THEDBUSER1 -p${THEDBPW1} $THEDB1 | gzip > /httpdocs/backup/dbbackup1_${THEDB1}_${THEDATE}.bak.gz
mysqldump -h $HOST -u $THEDBUSER2 -p${THEDBPW2} $THEDB2 | gzip > /httpdocs/backup/dbbackup2_${THEDB2}_${THEDATE}.bak.gz

# Sicherung der Dateien. Bitte Sicherung und Ziel Ordner anpassen.
tar czf /httpdocs/Sicherung/sitebackup_${THESITE}_${THEDATE}.tar -C / httpdocs/wichtigerOrdner
gzip /httpdocs/Sicherung/sitebackup_${THESITE}_${THEDATE}.tar

tar czf /httpdocs/Zielorner/sitebackup1_${THESITE1}_${THEDATE}.tar -C / httpdocs/wichtigerOrdner1
gzip /httpdocs/Zielorner/sitebackup1_${THESITE1}_${THEDATE}.tar

# Löscht alle Dateien mit der der Dateiendung .gz die Älter als 14 tage sind. Ordner bitte anpassen!
find -P "/httpdocs/Zielorner/" -maxdepth 1 -type f \( -name '*.gz' \) -ctime +14 -exec rm {} \;
  • Zeile 3-16: Es können 3 Webseiten inkl. Datenbanken angegeben werden.
  • THESITE = Ist frei wählbar und gibt den Dateinamen des Backups an. z.B. "meinewebseite"
  • THEDB = Name der Datenbank
  • THEDBUSER = Benutzername der Datenbank
  • THEDBPW = Passwort der Datenbank
  • HOST= IP Adresse der Datenbanken
  • Zeile 19-21+24-25+27-28+31: Hier müssen die Ordner anpepasst werden.

Diskstation Aufgabenplaner

Im Aufgabenplaner der Diskstation erstellt ihr eine neue Aufgabe. (Siehe Beispielbild)

Den Pfad zum Script bitte anpassen.

Das Script lädt die Sicherungsdateien eurer Webseite via FTP auf eure Diskstation in den Ordner "/volume1/Backup" herunter und löscht alle Sicherungen die älter als 14 Tage sind.

Script für die Diskstation "webserver_backup.sh"

#/bin/sh
find -P "/volume1/Backup/" -maxdepth 1 -type f \( -name '*.gz' \) -ctime +14 -exec rm {} \;
/usr/bin/lftp -c "set ftp:list-options -a;
set ssl:verify-certificate no;
#Hier eure Zugangsdaten eintragen. Am besten einen eigenen FTP Nutzer erstellen der nur Zugriff auf diesen Orner hat.
open ftp://BENUTZER:PASSWORT@IP-ADRESSE;
lcd /volume1/Backup;
mirror --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --exclude-glob .svn"
exit;
  • Zeile 6: Hier die Zugangsdaten eintragen
  • Zeile 7: Das Zielverzeichnis eurer Diskstation angeben. In meinem Fall wird das Backup in "/volume1/Backup" gesichert.

zum Schluss

Zum Schluss solltet ihr das Backupverzeichniss eures Webservers vor direktem Zugriff schützen, falls ein Zugriff von außen, aufgrund der Ordnerstruktur möglich ist.

Erzeugt dazu im Backup Verzeichnis eures Webservers eine Datei mit Namens .htaccess und diesem Inhalt:

RewriteEngine On
order deny,allow
deny from all