• Support
my.cyonWebmailBestellen
Dies ist eine Beta-Version der neuen cyon-Website
Einige Funktionen funktionieren möglicherweise nicht wie erwartet.
Backup über Shell-Script erstellen und lokal speichern

Backup über Shell-Script erstellen und lokal speichern

Aktualisiert am 9. Jan. 2025
War dieser Artikel hilfreich?

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.

Dieser Artikel ist eine Anleitung, um ein Backup-Script selber zu erstellen. Es werden dabei grundlegende Kenntnisse mit dem Umgang in der Kommandozeile/Shell vorausgesetzt oder das Interesse, sich diese selbständig anzueignen.

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, beispielsweise backup-script-cyon.sh.

vim /Users/<Anmeldename des Geräts>/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
# 09.01.2025 - Zusätzliche Sicherheit für Passwort-Eingabe

NAME="" # Name des Backups
USER="" # Anmeldename des Webhostings
SERVERNAME="" # Servername oder Domain
DATABASE="" # Datenbankname
DATABASEUSER="$DATABASE" # Anmeldename der Datenbank
DIRECTORY_SERVER="" # zu sicherndes Verzeichnis auf dem Server
DIRECTORY_LOCAL="" # Verzeichnis, lokaler Speicherort

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 "Anmeldename des Webhostings:\t$USER"
echo -e "Servername oder Domain:\t$SERVERNAME"
echo -e "Datenbankname:\t \t$DATABASE"
echo -e "Anmeldename der Datenbank:\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..."
        read -s -p "Datebank Passwort: " PASSWORD
        echo ""
        echo "Erstelle Datenbankdump..."

        ssh "${USER}"@"${SERVERNAME}" "mysqldump -u ${DATABASEUSER} -p${PASSWORD} ${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"

        # Lösche das Passwort aus der Variable
        PASSWORD=""
        ;;
    *)
        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/<Anmeldename des Geräts>/Documents/backup-script-cyon.sh

Beachte, dass es sich bei diesem Script lediglich um ein Anwendungsbeispiel handelt und wir dessen Vollständigkeit nicht garantieren können. Hast du Fragen zum Erstellen von Shell-Scripts, so bitten wir dich die Dokumentation der jeweiligen Script-Sprache und deren Community zur Hilfe zu nehmen.

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/<Anmeldename des Geräts>/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="" # Anmeldename des Webhostings
SERVERNAME="" # Servername oder Domain
DATABASE="" # Datenbankname
DATABASEUSER="" # Anmeldename der Datenbank
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 (Anmeldename meines Webhostings)
  • SERVERNAME: s003.cyon.net (Servername meines Webhostings)
  • DATABASE: olivero2_website (Name der Datenbank)
  • DATABASEUSER: olivero2 (Anmeldename der Datenbank oder des Webhostings)
  • DIRECTORY_SERVER: /home/olivero2/public_html/oliverorange.ch/ (Speicherort meiner Website)
  • DIRECTORY_LOCAL: /Users/<Anmeldename des Geräts>/Desktop/ (Speicherort auf dem lokalen Gerät)

Und hier der komplette Code des Beispiels:

NAME="oliverorange" # Name des Backups
USER="olivero2" # Anmeldename des Webhostings
SERVERNAME="s003.cyon.net" # Servername oder Domain
DATABASE="olivero2_wp262" # Datenbankname
DATABASEUSER="olivero2_wp262" # Anmeldename der Datenbank
DIRECTORY_SERVER="/home/olivero2/public_html/oliverorange.ch/" # zu sicherndes Verzeichnis auf dem Server, absoluter Pfad
DIRECTORY_LOCAL="/Users/&lt;Anmeldename des Geräts&gt;/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/&lt;Anmeldename des Geräts&gt;/Documents/backup-script-cyon.sh /Users/&lt;Anmeldename des Geräts&gt;/Documents/bkp-oliverorange.txt
2

Das Script zeigt dir nun die Werte aus der Konfigurationsdatei zur Bestätigung an.

Name der Installation:       oliverorange
Anmeldename des Webhostings: olivero2
Servername oder Domain:      s003.cyon.net
Datenbankname:               olivero2_wp262
Anmeldename der Datenbank:   olivero2_wp262
Server-Verzeichnis:          /home/olivero2/public_html/oliverorange.ch/
lokales Verzeichnis:         /Users/&lt;Anmeldename des Geräts&gt;/Desktop/
Passt so? [y/N]
3
Fahre mit y fort oder breche den Vorgang mit N 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

Hast du deine SSH-Keys noch nicht gespeichert, so empfehlen wir dies noch gemäss dem Artikel «SSH-Key erstellen» zu tun. Du ersparst dir somit das mehrfache Eingeben deines Webhosting-Passwortes.

War dieser Artikel hilfreich?
Kategorien
  • Backups erstellen und einspielen
  • Backup/Restore
Artikel teilen
Verwandte Artikel

Was dir auch helfen könnte

Wähle den für dich passenden Kanal

Backup regelmässig per Cronjob erstellen

Möchtest du ein Script regelmässig laufen lassen, um ein Backup deiner Website automatisch zu erstellen? Diese A...

Backups aus Apps lokal speichern

Über cyon-Apps hast du die Möglichkeit, automatisch Backups deines CMS oder deiner Applikation zu erstellen. Die...

Backup einer Website erstellen

Es empfiehlt sich, regelmässig Backups von einer Website zu erstellen. Vor allem bevor man Änderungen vornimmt w...

Wiederherstellung (Backup) meiner Daten

Wenn deine Datensicherung nicht funktioniert hat, stellen wir dir gerne Daten aus einer unserer Sicherungen zur ...

Backups unter Apps erstellen und zurückspielen

Du möchtest automatisch Backups deiner Website erstellen? Unter cyon-Apps hast du die Möglichkeit, manuell oder ...

E-Mail-Programm konfigurieren

Unser E-Mail-Zauberer führt dich durch den Einrichtungsprozess: Verwalte deine E-Mail-Konten ganz bequem über das E-Mail-Programm deiner Wahl. Mit unserem Einrichtungsassistenten gelingt dir dies ganz einfach.

E-Mail-Zauberer starten

Stressfrei Website & E-Mail umziehen lassen

Unser Umzugsteam begleitet dich beim Wechsel zu cyon – Schritt für Schritt.

Jetzt ohne Doppelkosten wechseln

Scharon

Customer Support

Gabriel

Customer Support

Immer auf dem Laufenden bleiben

Tipps, Tools & Insights für deine Webprojekte.

Jetzt Newsletter abonnieren
Support

Du brauchst persönliche Unterstützung?

Wähle den für dich passenden Kanal

Statusmeldungen

Statusmeldungen

Übersicht über unsere Systeme

Statusmeldungen

  • Unser Systemstatus ist aktuell stabil.
  • Geplante Wartungsarbeiten am 15. Juli 2024 von 02:00 bis 04:00 Uhr.
  • Es gibt derzeit keine bekannten Störungen.

Wichtige Hinweise

  • Bitte überprüfe regelmässig unseren Status-Feed für aktuelle Informationen.
  • Bei dringenden Problemen kontaktiere unseren Support.

Wir machen das Internet zu einem besseren Ort

4.8 / 5
Swiss Label
Swiss Hosting

Hosting

  • Webhosting
  • Webhosting Pro
  • Sitebuilder
  • https:// für alle
  • Umzugsservice

Server

  • Managed Server
  • Agency Server

Domains

  • Domains
  • Domain transferieren
  • Alle Domains

Support

  • Support Center
  • E-Mail Zauberer
  • my.cyon
  • Webmail

Über uns

  • Warum cyon
  • Team
  • Jobs
  • Geschichte
  • Partner*innen
  • Engagement
  • Nachhaltigkeit
  • Infrastruktur
  • Blog

Rechtliches

  • AGB
  • Datenschutzerklärung
  • Impressum
Swiss Label
Swiss Hosting
Folge uns
Newsletter

Schliesse dich 4.000 anderen an (+20 in der letzten Woche neu beigetreten)