Backup über Shell-Script erstellen und lokal speichern
Backups sind vor jeglichen Änderungen an einer Website essentiell und sollen deshalb regelmässig und am besten ohne grossen Aufwand zuverlässig erstellt werden können. Unser Artikel «Backup einer Website erstellen» beschreibt dabei einige Möglichkeiten.
Funktionsweise des Scripts
Grundsätzlich geht das Script wie unter «Manuelles Backup per SSH» im Artikel «Backup einer Website erstellen» vor, nur eben automatisch.
Es werden also alle Dateien eines definierten Verzeichnisses komprimiert und auf das lokale Gerät heruntergeladen, ebenso die angegeben Datenbank, welche lokal exportiert wird.
Script installieren
- 1
-
Erstelle eine Datei mit der Dateiendung
.sh
, beispielsweisebackup-script-cyon.sh
.vim /Users/<Benutzername>/Documents/backup-script-cyon.sh
- 2
-
Füge nun folgenden Code ein:
#!/bin/bash #- cyon_bkp_local.sh 0.1 #- Copyright (C) 2019 Stefan Schneider - cyon GmbH ## ## Usage: cyon_bkp_local configfile # History: # 09.05.2019 - Erste Version NAME="" # Name des Backups USER="" # Webhosting-Benutzer SERVERNAME="" # Servername oder Domain DATABASE="" # Datenbankname DIRECTORY_SERVER="" # zu sicherndes Verzeichnis auf dem Server DIRECTORY_LOCAL="" # Verzeichnis, lokaler Speicherort DATABASEUSER="$DATABASE" # Datenbankbenutzer source $1 DATE=`date +%y%m%d-%H%M` BACKUPNAME="$DATE"_"$NAME"_backup # Return Codes: E_NOARGS=3 E_STDERR=1 SUCCESS=0 MIN_PARAMS=1 # Echo variables and ask to continue echo -e "Name der Installation:\t$NAME" echo -e "Webhosting-Benutzer:\t$USER" echo -e "Servername oder Domain:\t$SERVERNAME" echo -e "Datenbankname:\t \t$DATABASE" echo -e "Datenbankbenutzer:\t$DATABASEUSER" echo -e "Server-Verzeichnis:\t$DIRECTORY_SERVER" echo -e "lokales Verzeichnis:\t$DIRECTORY_LOCAL" read -r -p "Passt so? [y/N] " response case "$response" in [yY][eE][sS]|[yY]) echo "Verbinde auf den Server..." echo "" echo "Erstelle Datenbankdump..." ssh "${USER}"@"${SERVERNAME}" "mysqldump -u ${DATABASEUSER} -p ${DATABASE} > /home/${USER}/tmp/${BACKUPNAME}.sql" if [[ $? != 0 ]]; then echo "Konnte Datenbank nicht dumpen"; exit $?; fi echo "Datenbank gedumpt" echo "" echo "Komprimiere Webseite..." ssh "${USER}"@"${SERVERNAME}" "tar -czf /home/${USER}/tmp/${BACKUPNAME}.tar.gz ${DIRECTORY_SERVER}" if [[ $? != 0 ]]; then echo "Konnte Webseite nicht komprimieren"; exit $?; fi echo "Webseite komprimiert" echo "" if [ ! -d "${DIRECTORY_LOCAL}" ]; then echo "${DIRECTORY_LOCAL} existiert nicht, erstelle Verzeichnis.." mkdir -p $DIRECTORY_LOCAL fi echo "Kopiere Daten..." rsync -avSP "${USER}"@"${SERVERNAME}":/home/"${USER}"/tmp/${BACKUPNAME}.sql ${DIRECTORY_LOCAL}/ rsync -avSP "${USER}"@"${SERVERNAME}":/home/"${USER}"/tmp/${BACKUPNAME}.tar.gz ${DIRECTORY_LOCAL}/ if [[ $? != 0 ]]; then echo "Kopieren der Daten fehlgeschlagen"; exit $?; fi echo "Daten kopiert" echo "" echo "Entferne Backups auf dem Server..." ssh "${USER}"@"${SERVERNAME}" "rm -v /home/${USER}/tmp/$BACKUPNAME.tar.gz" ssh "${USER}"@"${SERVERNAME}" "rm -v /home/${USER}/tmp/$BACKUPNAME.sql" if [[ $? != 0 ]]; then echo "Entfernen der Daten vom Server fehlgeschlagen"; exit $?; fi echo "Backups auf dem Server entfernt" echo "" echo "Done! Backups von Datenbank und Webseite wurden in $DIRECTORY_LOCAL abgespeichert" ;; *) exit $SUCCESS ;; esac exit $SUCCESS
- 3
- Speichere und schliesse die Datei.
- 4
-
Damit das Script ausgeführt werden kann, ändere noch die Dateiberechtigung auf
755
.chmod 755 /Users/<Benutzername>/Documents/backup-script-cyon.sh
Konfigurationsdatei(en) erstellen
Das Script ist nun installiert. Um dem Script mitzuteilen, wo die Daten für das Backup liegen und wohin diese gespeichert werden sollen, erstellen wir nun pro Website eine weitere Datei, welche als Konfigurationsdatei dient.
- 1
-
Erstelle eine Textdatei, beispielsweise
bkp-oliverorange.txt
.vim /Users/<Benutzername>/Documents/bkp-oliverorange.txt
- 2
-
Füge nun folgenden Code ein und ergänze die Angaben mit den Werten der gewünschten Website.
NAME="" # Name des Backups USER="" # Webhosting-Benutzer SERVERNAME="" # Servername oder Domain DATABASE="" # Datenbankname DATABASEUSER="" # Datenbankbenutzer DIRECTORY_SERVER="" # zu sicherndes Verzeichnis auf dem Server, absoluter Pfad DIRECTORY_LOCAL="" # Verzeichnis, lokaler Speicherort, absoluter Pfad
Ein Beispiel für oliverorange.ch könnte wie folgt aussehen:
- NAME: oliverorange (kann frei vergeben werden)
- USER: olivero2 (Benutzername meines Webhostings)
- SERVERNAME: s003.cyon.net (Servername meines Webhostings)
- DATABASE: olivero2_website (Name der Datenbank)
- DATABASEUSER: olivero2 (Datenbank-Benutzer oder Benutzername des Webhostings)
- DIRECTORY_SERVER:
/home/olivero2/public_html/oliverorange.ch/
(Speicherort meiner Website) - DIRECTORY_LOCAL:
/Users/<Benutzername><benutzername>/Desktop/
(Speicherort auf dem lokalen Gerät)
Und hier der komplette Code des Beispiels:
NAME="oliverorange" # Name des Backups USER="olivero2" # Webhosting-Benutzer SERVERNAME="s003.cyon.net" # Servername oder Domain DATABASE="olivero2_wp262" # Datenbankname DATABASEUSER="olivero2_wp262" # Datenbankbenutzer DIRECTORY_SERVER="/home/olivero2/public_html/oliverorange.ch/" # zu sicherndes Verzeichnis auf dem Server, absoluter Pfad DIRECTORY_LOCAL="/Users/<Benutzername>/Desktop/" # Verzeichnis, lokaler Speicherort, absoluter Pfad
- 3
- Speichere und schliesse die Datei. Hast du weitere Websites, welche du mit einem Script lokal speichern möchtest, so erstelle nun für jede Website eine solche Datei.
Backup-Script ausführen
Das Backup-Script ist nun eingerichtet und kann verwendet werden. Um ein Backup zu erstellen, gib den absoluten Pfad zur Script-Datei gefolgt durch den absoluten Pfad zur gewünschten Konfigurationsdatei ein.
- 1
-
Gib die beiden Pfade durch ein Leerzeichen getrennt ein.
/Users/<Benutzername>/Documents/backup-script-cyon.sh /Users/<Benutzername>/Documents/bkp-oliverorange.txt
- 2
-
Das Script zeigt dir nun die Werte aus der Konfigurationsdatei zur Bestätigung an.
Name der Installation: oliverorange Webhosting-Benutzer: olivero2 Servername oder Domain: s003.cyon.net Datenbankname: olivero2_wp262 Datenbankbenutzer: olivero2_wp262 Server-Verzeichnis: /home/olivero2/public_html/oliverorange.ch/ lokales Verzeichnis: /Users/<Benutzername>/Desktop/ Passt so? [y/N]
- 3
-
Fahre mit
y
fort oder breche den Vorgang mitN
ab. - 4
-
Das Script erzeugt nun ein komprimiertes File des angegebenen Verzeichnisses und lädt einen Datenbank-Dump herunter.
190520-1050_oliverorange_backup.sql 190520-1050_oliverorange_backup.tar.gz
Kategorien