Inhaltsverzeichnis
- Eigenen Benutzernamen auf der Synology erstellen
- Über SSH Key erstellen
- SSH Key an Hoster
- Dateiberechtigung auf 600 setzen & Besitzer des Ordners wechseln
- Auf den Server einloggen nachdem das Zertifikat installiert ist
- Script über Aufgabenplaner hinzufügen
- Zuerst den MySQLdump ausführen
- Besonderheit bei Sonderzeichen im Passwort der MySQL Datenbank
- Bei täglichen Backups bitte als Erstes die Dateien löschen mit folgendem Befehl
- Download für die Datenbankdatei und den kompletten WP Ordner
- Willst Du bei täglichen Backups vorher ein Zip-File auf dem Server generieren?
- Verzeichnis mit Datum auf der Synology anlegen (optional aber emfpehlenswert)
- Script testen
Aktualisiert am 12.04.2022
Das war jetzt mal ein Brand, den ich für mich selbst gelöscht habe. Ich suchte nach einer Möglichkeit meine Backuproutine zu vereinfachen und effizienter zu gestalten.
Da ich einen SSH Zugriff auf mein Hosting habe, sollte das ja wohl kein Problem sein. Aber wie bewerkstelligen? Erst einmal Synology anfragen. Die haben mir geschrieben, dass ich es über eine Aufgabe im Aufgabenplaner erledigen soll.
Sie haben mir auch gleich ein Script geschickt, womit es funktionieren soll. Allerdings waren hier Theorie und Praxis weit auseinander.
Hier nun die Beschreibung, wie man ein Backupprozess auf der Synology anlegt für die Datenbank und WordPress
Eigenen Benutzernamen auf der Synology erstellen
Damit der Backupprozess nur unter diesem einen Benutzer ausgeführt werden kann, einen neuen Benutzer erstellen. Dazu ein sehr gutes Passwort wählen mit (empfohlen) 20-30 Zeichen
Optional kann auch ein anderer Ordner angelegt werden. Standardmässig wird ins Benutzerverzeichnis heruntergeladen werden. Dazu aber später mehr. Wichtig ist nur, dass dort die entsprechenden rechte an den Benutzer vergeben werden.
Über SSH Key erstellen
Mit dem entsprechend neu angelegten Benutzer nun den Key über SSH erstellen. Dazu einloggen (zum Beispiel über Putty) auf die Synology mit diesem Benutzer und folgende Befehle ausführen:
Key erstellen:
ssh-keygen -t rsa
Key auslesen:
cat .ssh/id_rsa.pub
SSH Key an Hoster
Übergib den Key nun dem Hoster oder trage es selbst in deinem SSH Benutzer ein. Detaillierte Anleitungen dazu gibt dir sicher dein Hoster.
Dateiberechtigung auf 600 setzen & Besitzer des Ordners wechseln
Auf der Synology den Besitzer des Ordners .ssh und deren Unterordnder mit rechtsklick – Eigenschaften zu admin wechseln. Sonst hat der aktuelle Benutzer die Möglichkeit die Dateien zu ändern und das quittiert der SSH Server mit der Verweigerung des automatisch hinterlegten Passworts und somit funktioniert das nachstehende Script nicht.
Setze nun mit folgendem Befehl die Dateiberechtigung auf 600:
find .ssh/id_rsa.pub -type f -exec chmod 600 {} \;
Auf den Server einloggen nachdem das Zertifikat installiert ist
Du befindest dich noch auf der Synology mit deinem Benutzer. Ist das Zertifikat bereits eingebunden, kannst du nun fortfahren. Ansonsten musst du warten, bis es eingebunden ist und danach loggst Du dich zuerst wieder mit dem Benutzer auf die Synology ein.
Fahre nun fort, indem du dich mit dem SSH Benutzer des Servers auf dem Server einloggst:
ssh BENUTZER@SERVERNAME
Nun wirst Du wahrscheinlich einige Meldungen erhalten. Die kannst Du mit yes bestätigen. Tippe nach Abschluss exit ein und logge dich erneut auf den Server ein. Nun sollte es so sein, dass Du kein Passwort mehr benötigst, Erst JETZT kann das Script über die Synology funktionieren.
Script über Aufgabenplaner hinzufügen
Zuerst den MySQLdump ausführen
#!/bin/bash
ssh BENUTZER@SERVERNAME <<EOF
mysqldump -h DATENBANKSERVER -u DBUSER -pPASSWORD DBNAME > VERZEICHNIS/VERZEICHNIS/DATENBANK_NAME_BACKUP.sql
bye
EOF
Besonderheit bei Sonderzeichen im Passwort der MySQL Datenbank
Statt -pPASSWORT setzt Du nun folgenden Zeichensatz: -p'PASSWORDmitSonderzeichen' Wichtig sind hierbei die 'Hochkommas'. Der Rest des Codes kann gleich bleiben.
Es empfehlt sich sicherheitstechnisch sehr, die Datenbank nicht in den Ordner zu sichern, in dem die WP-Installation liegt. Du könntest auf de, Server ein eigenes Verzeichnis im Rootverzeichnis anlegen und die Datei dort speichern. Danach musst Du Dir einfach den Speicherort merken, damit du die Datei über das nächste Script Herunterladen kannst.
Bei täglichen Backups bitte als Erstes die Dateien löschen mit folgendem Befehl
rm -rf VERZEICHNIS/VERZEICHNIS/DATENBANK_NAME_BACKUP.sql
Download für die Datenbankdatei und den kompletten WP Ordner
#!/bin/bash
sftp BENUTZER@SERVERNAME <<EOF
get verzeichnis/verzeichnis/DATENBANK_NAME_BACKUP.sql
mget -r INSTALLATIONSVERZEICHNIS/WORDPESS/
bye
EOF
Nun wird im Hintergrund der Downloadprozess gestartet. Um zu testen, ob es funktioniert, nimmst Du einfach die einzelnen Zeilen und loggst Dich per SSH auf den Server ein. Allerdings zuerst auf der Synology, wenn du die Dateien in Deinem Synology Ordner drin haben willst.
Willst Du bei täglichen Backups vorher ein Zip-File auf dem Server generieren?
#!/bin/bash
ssh BENUTZER@SERVERNAME <<EOF
zip -r VERZEICHNIS/VERZEICHNIS/ZIP/filename.zip /VERZEICHNIS/VERZEICHNIS/www/WORDPRESS (anschliessend auf der gleichen Linie das Verzeichnis angeben)
Auch hier bei täglichen Backups erst die Datei löschen auf dem Server, bevor sie erstellt wird:
rm -rf VERZEICHNIS/VERZEICHNIS/ZIP/filename.zip
Verzeichnis mit Datum auf der Synology anlegen (optional aber emfpehlenswert)
Du kannst auch noch ein Verzeichnis auf der Synology mit dem Datum Anlegen, dort wo du die Installation heruntergeladen haben möchtest:
Dazu ergänzt Du das Script wie folgt:
#!/bin/bash
cd /volume1/VERZEICHNIS/VERZEICHNIS/
folder=$(date +%Y%m%d)
mkdir $folder
cd $folder
Danach kannst Du das, was oben beschrieben wurde ebenfalls noch unten anhängen und dein Backup wird nun in den entsprechenden Ordner abgelegt.
Die MySQL Datenbank solltest Du 1 Minute vor dem Prozess mit der kompletten Installation starten, damit diese auch wirklich im Verzeichnis liegt.
Script testen
Bevor Du nun alles der Routine überlässt, mach auf jeden Fall ein zwei Tests. Du kannst am aktuellen Tag den Test manuell, per Rechtsklick auf den Prozess, starten. Danach lässt du ein zwei Tage das Script laufen und testest, ob es auch wirklich korrekt funktioniert.
Viel Spass beim Umsetzen.