DB der Web Station per Aufgabenplaner sichern...

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Moin zusammen,

ich würde gerne die Datenbank meiner Web Station automatisch jeden Tag sichern lassen. Da ich die Dateien für den direkten Zugriff und zur externen Sicherung auch als Dateien vorliegen haben möchte, würde meines Wissens HyperBackup ausscheiden.

Mein Gedanke war jetzt, das ganze über den Aufgabenplaner laufen zu lassen, genauso wie ich es bereits mit meiner paperless-ngx-DB mache. Nur die läuft im Docker, daher weiß ich nicht ob es bei den anderen Datenbanken auch geht und wie ich das machen müsste.

Ich habe hier einen alten Thread gefunden, der ist aber mittlerweile 8 Jahre alt und ich weiß nicht, ob das aktuell noch so passt.

https://www.synology-forum.de/threads/web-ordner-backup-der-mysql-datenbank.72182/

da wurde auf dieses Script verwiesen:

https://www.synology-wiki.de/index.php/Backup_der_MySQL-Datenbank_über_einen_cronjob

Das muss aber in die /etc/crontab eingetragen werden. Ich fummele als Unwissender nur ungerne an dem System herum...^^

Daher die Frage, ob so etwas wie oben beschrieben auch über den Aufgabenplaner möglich ist?

Besten dank

Frederic

P.S. Wenn die Frage im falschen Forum gestellt wurde, bitte nicht hauen und einfach verschieben...^^ Bei den vielen Möglichkeiten war ich mir nicht sicher...
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Das muss aber in die /etc/crontab eingetragen werden
Muss es nicht. Das geht auch im Aufgabenplaner.
würde meines Wissens HyperBackup ausscheiden.
Wieso? Hyper Backup sichert nur in der versionierten Variante in ein Art Archiv. Man kann aber auch einfach als Einzelversion sichern. Da werden die Daten 1:1 kopiert. Und die versionierte Sicherung kann man auch einfach an jedem System mit dem Hyper Backup Explorer (zu finden im Download-Zentrum) auslesen,
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Und gerade das möchte ich nicht. Ich muss zur Not auf die Daten mit jedem Gerät zugreifen können. Was passiert z.B. wenn Synology den Explorer mal einstellen würde? Als zusätzliche Sicherung sicherlich sinnvoll, aber nicht alleine. Ich mache mich da nicht gerne von Programmen abhängig. Das ist auch der Grund, warum ich bei meinen Backups immer noch auf das gute alte Cobian-Backup setze und um Sachen wie Acronis einen großen Bogen mache.

Wenn ich das richtig verstehe werden bei der 1:1-Sicherung die Dateien doch mit jedem neuen Backup überschrieben, oder? Auch dass wäre für mich ein Ausschlusskriterium, eine bleibende Sicherung mit Datum und Uhrzeit ist da Vorgabe.

Würde das in dem einen Link gezeigte Script den so auch heute noch im Aufgabenplaner funktionieren?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ob das noch so funzt, glaub ich nicht. Der Pfad ist schonmal anders (mit DSM 7.2 und MariaDB10). Abseits vom vermeintlich falschen Pfad sieht das aber, insofern ich das beurteilen kann, erstmal funktional aus. Musst halt mal testen. Pfad:
11.png
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
OK, ich bin ein wenig verwirrt...ich habe das Script jetz so angepasst:

Code:
#!/bin/bash
#
# dieses Skript kann man beliebig oft ausführen
#
# Anzahl der Sicherungen die aufgehoben werden sollen
KEEP=20
BACKUPS=`find /volume2/Backup/Frederic/Web-DB -name "mysqldump-*.gz" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume2/Backup/Frederic/Web-DB/mysqldump-*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
DATE=`date +%Y%m%d%H%M%S`
rm -f /volume2/Backup/Frederic/Web-DB/.mysqldump-${DATE}.gz_INPROGRESS
/usr/local/bin/mysqldump --opt -uroot -PASSWORT --all-databases | gzip -c -9 > /volume2/Backup/Frederic/Web-DB/.mysqldump-${DATE}.gz_INPROGRESS
mv -f /volume2/Backup/Frederic/Web-DB/.mysqldump-${DATE}.gz_INPROGRESS /volume2/Backup/Frederic/Web-DB/mysqldump-${DATE}.gz
exit 0

Die einzige Fehlermeldung, die ich jetzt bekomme ist

/usr/local/bin/mysqldump: unknown option '-4'

Ich habe, ehrlich gesagt, mit mehr Fehlern gerechnet...^^ Den genannten Eintrag finde ich aber nicht in dem Script, daher kann ich ihn so direkt nicht ändern.

Eine andere Frage wäre: Was müsste ich ändern, wenn die Dateien ungepackt als *.sql gespeichert werden sollen? Das Sichern per Script ist nur der erste Teil der Sicherung, diese werden danach separat gepackt und eine gepackte Datei in einer gepackten Datei muss ja nicht unbedingt sein...

Und noch eine Frage: Kann es sein, dass der Aufgabenplaner oder Scripte bei der DS Probleme mit Leerzeichen haben?
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
fängt Dein Passwort mit 4 an? Das sollte -uroot -pPASSWORT heißen.

Gruß Götz
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
@goetz
Jain....ich hatte das falsche PW genommmen und der Fehler lag dort...^^

Aber kann es sein, dass das Script Probleme mit Sonderzeichen im Passwort hat? Ich bekomme den Teil hinter dem Sonderzeichen (";") im Passwort als Fehler ausgegeben.

Code:
/bin/bash: line 14: XXXXXXXXXX: command not found
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Kommt auf das Sonderzeichen an. Kannst es ja mal mit -p"PasswortMitSonderzeichen", also mit " drum rum, versuchen.
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Das war es!

Generell funzt das ganze, ich habe das Script dank der Dokumentation auch soweit angepasst bekommen, dass es nur eine bestimmte DB sichert. Was ich darin aber nicht gefunden habe wäre, wie ich die Kompression in gzip deaktiveren kann und alles normal als sql-Datei sichere.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Einfach das gzip entfernen und in eine SQL Datei schreiben. Und überall wo gz in den Dateien vorkommt musst du es halt ersetzen
 
  • Like
Reaktionen: Furchensumpf

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Ich denke, du musst da nur den Teil | gzip -c -9 rausnehmen und das File dann nicht unbedingt ".gz" nennen. Ersetze dann einfach überall ".gz" durch ".sql".
Edit: @alexhell war schneller
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Und auch hier wieder: Das war es...^^

Ich hatte fälschlicherweise das komplette

| gzip -c -9 > /volume2/Backup/Frederic/Web-DB/.mysqldump-${DATE}.gz_INPROGRESS

entfernt, da ich dachte, dass das zur Kompression gehört.

Perfekt, jetzt muss ich mir um meine Datenbank auch keine Sorgen mehr machen.

Besten dank an alle für die Hilfe!
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Was mir an dem Script noch nicht gefällt ist, dass "/volume2/Backup/Frederic/Web-DB" gefühlte 100 Mal vorkommt.
Ich würde eine Env-Variable, z.B.
BACKUPDIR="/volume2/Backup/Frederic/Web-DB"
im Kopf setzen und überall dann $BACKUPDIR stattdessen schreiben.
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Guter Vorschlag und umgesetzt...^^

Das lässt das Script natürlich für spätere andere Sicherungen einfacher anpassen.

Dazu noch eine Frage von oben: Kann es sein dass solche Scripte Probleme mit Leerzeichen haben? Das Verzeichnis war vorher "Web DB", da kam aber auch eine Fehlermeldung, dass das Verzeichnis nicht gefunden wurde (das Leerzeichen wurde anscheinend als Trenner interpretiert), so dass ich es in Web-DB ändern musste...was jetzt aber nicht zum Rest "passt"....da kommt der innere Monk in mir durch...^^
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Klar mach das Probleme. Du müsstest das dann überall in " setzen, um zu sagen, dass das zusammen gehört.
 
  • Like
Reaktionen: Furchensumpf

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Leerzeichen in Ordnern musst du entweder den Pfad in "" setzen oder du verwendest Order\ Name. Also immer ein \ vor dem Leerzeichen.
 
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Wenn ich das so umsetze:

BACKUPDIR="/volume2/Backup/Frederic/Web\ DB"

Dann bekomme ich zunächst die übliche Fehlermeldung

find: `/volume2/Backup/Frederic/Web\\': No such file or directory
find: `DB': No such file or directory

Und in Anführungsstriche ist das ja schon gepackt...

Wenn ich aber das $BACKUPDIR in Anführungsstriche setze, dann funzt das. Währe das so richtig?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Ja. Du musst die einfach nur vorstellen, dass $BACKUPDIR vor der Ausführung des Befehls durch den Inhalt ersetzt wird. Und wenn da Leerzeichen drin sind, muss du "$BACKUPDIR" anstatt nur $BACKUPDIR schreiben.
Aber mach's doch nicht so kompliziert. Verzichte besser auf Leer- und Sonderzeichen in Pfaden.

Edit:
Aber
BACKUPDIR="/volume2/Backup/Frederic/Web\ DB"
ist auch etwas doppelt gemoppelt, entweder
BACKUPDIR="/volume2/Backup/Frederic/Web DB"
oder
BACKUPDIR=/volume2/Backup/Frederic/Web\ DB
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Furchensumpf

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Ich war mir nur nicht sicher ob das jetzt nicht zwei mal Anführungsstriche eingefügt werden.

Wegen der LEerzeichen: Je nach dem wo der Ordner liegt müsste ich bei anderen Sicherungen evt. die ganze Ordnerstruktur anpassen - womit dann auch andere Sicherungen angepasst werden müssten. Das wäre dann doch ein wenig viel...

So funzt es ja und ich weiß jetzt wie. Und wieder eine Menge gelernt...^^
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Schreib einfach überall "$BACKUPDIR", also mit ", dann geht alles
 
  • Like
Reaktionen: Furchensumpf


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat