Hyper Backup Script für Backup mit rsync erstellen

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Hallo,
nachdem HyperBackup für meine Zwecke ausgeschieden ist möchte ich mit rsync ein Backup-Script (*.sh) erstellen, welches die freigegebenen Ordner auf die USB Platte sichert. Das ist grundsätzlich kein Problem. Was ich aber bräuchte ist, dass ein eventuell erstelltes Fehlerprotokoll per Mail versendet wird.

(( Bitte hier keine Fragen wieso HyperBackup nicht passt.
Wenn es jemanden interessiert gibt es diesen Beitrag mit Post #16
https://www.synology-forum.de/threa...e-eigenartiges-verhalten.136921/#post-1216848 ))

Zum Thema:
Kann jemand sagen, welches Script Kommando eine Datei per Mail versendet?
Ich würde abfragen ob eine Fehlerdatei vorhanden ist und wenn ja, dann an den MailClient zum Versenden
den Empfänger, Betreff, Nachrichtentext und Beilage übergeben..
Bei meiner DS224+ habe ich den MailClient eingerichtet und das DSM kann Mails versenden.
Aber was gebe ich im Script an. Ich kenne den jeweiligen Befehl nicht.
Alles andere um ein gescheites rsync Script zu erstellen wäre vermutlich nicht das Problem.
Ist zwar schon 20 Jahre her als ich Linux Admin war, aber Fahrrad fahren verlernt man ja auch nicht. :D

PS: Und falls jemand bereits ein funktionierendes Script als Vorlage hätte, dann wäre ich auch froh über die ersparte Lebenszeit. :)

Danke!
Wolfgang
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.776
Punkte für Reaktionen
1.723
Punkte
314
Hi!

Da ich grad unterwegs bin, kann ich dir den Code zum versenden einer Mail grad nicht geben, da ich diesen zunächst aus meinen eigenen Scripten herauslösen müsste. Aber in jedem Fall ist hier ssmtp am Werk, soviel kann ich schon mal sagen.

Falls du dir aber Zeit und Mühe für die eigene Scripterstellung ersparen möchtest, kannst du gerne mal einen Blick auf mein CLI-Backup-Tool jarss werfen. Das Script verschickt primär zwar keine Protokolle per Email, wenn du das Script jedoch über den DSM-Aufgabenplaner ausführst kann dir das Protokoll darüber zugeschickt werden. Dafür musst du natürlich die passende Option im Aufgabenplaner aktivieren. Sobald ich wieder zu Hause bin, kann ich dir das genauer erklären, falls Interesse besteht.
 

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Wau.... super, danke ! (y)
JA, bitte das würde mir sehr helfen. Vor allem Zeit zu sparen.
Jeder Softwareentwickler weiß, dass der Code schnell geschrieben ist, aber das Testen aller Eventualitäten, sodass es wirklich fehlerfrei funktioniert, und dieses und jenes Problem abgefangen wird, wie etwa falsche Parameterübergabe, zu wenig Platz im Ziel, ausgeworfene USB-Platte und vieles mehr, das ist der Aufwand.
Ich schaue mir inzwischen den Link an den du mitgesendet hast.
Den Code zum Versenden einer Mail benötige ich dann sowieso.
Das Backup wird nicht das Einzige sein wo ich das brauche.
DANKE !!
:)
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.776
Punkte für Reaktionen
1.723
Punkte
314
Dir steht es natürlich frei, mein Script an deine eigenen Bedürfnisse anzupassen bzw. zu erweitern. Ich hätte sicherlich noch ein paar weitere Codeschnipsel für dich, um z.B. die UUID eines USB-Datenträgers auszulesen um darüber sicherzustellen, das das Backup immer auf dem richtigen Datenträger landet. Vieles von dem habe ich in meinem mittleren stillgelegten Paket Basic Backup implementiert gehabt. Mein CLI-Script jarss zielt aber eher darauf ab, auf so gut wie jedem unixoiden Betriebssystem lauffähig zu sein, daher sind viele DSM spezifische Dinge weggefallen. Und nein… ich werde das nicht wieder in jarss implementieren.

Bis später
 
  • Like
Reaktionen: maxblank und Benie

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Super Script von dir, so wie es sein soll. Danke!
Für mich noch ein Send Mail rein und ich bin zufrieden.

Ich habe in Windows ein robocopy Script. Alle Sicherungsziele müssen von mir explizit eingerichtet werden. Denn dort muss sich immer eine bestimmte Dummy-Datei befinden. Dann weiß das Script, dass die Übergabeparameter und das Ziellaufwerk stimmen. Und nur dann geschieht die Sicherung dort hin. Sonst Fehlermeldung. So mache ich es, damit das Script mit einfachen Befehlen funktioniert und überall lauffähig ist.
Nicht gerade für den Verkauf bestimmt (haha....) aber das läuft seit 15 Jahren auf Win-Server (als redundante Sicherung zur windowseigenen Sicherung) und auf Win-Clients fehlerfrei. :D
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.776
Punkte für Reaktionen
1.723
Punkte
314
Hier das (absolut rudimentäre) Mail-Script.

Bash:
#!/bin/bash

# Die E-Mail Adresse des Absenders (emailto) muss gleich der im DSM unter
# Hauptmenü > Systemsteuerung > Benachrichtigung > E-Mail angegebenen
# Absenderadresse sein. Ansonsten wird keine E-Mail zugestellt.
emailto="name1@email.tld"
emailfrom="name2ſemail.tld"
tempfile="/tmp/tempfile.tmp"

echo "To: ${emailto}" > ${tempfile}
echo "From: ${emailfrom}" >> ${tempfile}
echo "Subject: Testmail" >> ${tempfile}
echo "" >> ${tempfile}
echo "Lorem ipsum dolor sit amet, consetetur sadipscing elitr" >> ${tempfile}
echo "" >> ${tempfile}
ssmtp "${emailto}" < ${tempfile}
 

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Danke, es funktioniert!
Jetzt kommt es mir auch bekannt vor. Ich habe vor 25 Jahren auf RedHat oder HP Unix "sendmail" verwendet.

Kann man die Mailadresse nicht gleich aus dem DSM auslesen? Vermutlich nicht, wird irgendwo in einer proprietären Synology Datenbank stehen.
Damit ist schon ein Fehler vorprogrammiert. Denn wenn ich irgendwann in 1 Jahr dort im DSM die Mailadresse ändere, dann müsste ich diese im Script auch anpassen. Sonst glaube ich die Datensicherung ist immer fehlerfrei, dabei wird nur kein Error.log gesendet. Ich glaube nicht, dass dann jemand daran denkt.
Da werde ich dann wohl eine wöchentliche Kontrollmail senden müssen um zu sehen, dass es funktioniert. Ist vielleicht grundsätzlich eh nicht schlecht das zu machen. :)

Falls du weißt ob man eine Datei als Attachment dazufügen kann würde mich das interessieren. Aber ich kann schon selbst im Web schauen. Nur falls du weißt, dass es nicht geht, dann wäre eine Info gut, weil ich dann nicht umsonst suche.
(Nachtrag: Habe schon etwas gefunden, scheint etwas komplizierter zu sein. Da muss ich nochmal genauer schauen.)

Danke für deine Unterstützung!
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.776
Punkte für Reaktionen
1.723
Punkte
314
Kann man die Mailadresse nicht gleich aus dem DSM auslesen?
Klar!
Bash:
# Absender
synogetkeyvalue /usr/syno/etc/synosmtp.conf smtp_from_mail
# Empfänger
synogetkeyvalue /usr/syno/etc/synosmtp.conf eventmails

Falls du weißt ob man eine Datei als Attachment dazufügen kann würde mich das interessieren.
Jein!
Bash:
# Fügt den Dateiinhalt der Email hinzu...
file="/[PFAD]/[ZUR]/[DATEI]/[DATEINAME.EXT]"
cat "${file}" >> "{$tempfile}"

Einen Dateianhang mitzuschicken, müsste ich selbst nochmal nachschauen, wie das ging... sollte aber auch möglich sein.
 
  • Like
Reaktionen: Woolfgang359

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Textfile in Mailtext anhängen kenne ich, danke. Ich meinte Dateianhang. Brauchst aber nicht schauen. Ich brauche es derzeit nicht und es ist mit MIME dann vermutlich etwas komplizierter.

Danke, du hast mir sehr geholfen!
 

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
@Tommes
Da du dich mit Synology spezifischen Dingen gut auskennst, weißt du evtl. wo ich die Namen der freigegebenen Ordner auslesen kann? Ich möchte nämlich in meinem Script alle Freigaben sichern. Und wenn ich später eine neue Freigabe anlege soll diese automatisch mitgesichert werden. Ich will nicht erst im Script die Freigabe einfügen müssen. Das wäre eine Fehlerquelle die ich vermeiden möchte. Okay, ich könnte es als Übergabeparameter machen, aber auch hier darf ich nicht vergessen. Im Web finde ich nichts bzw. kommen nur Infos innerhalb des DSM und nicht die Info wie ich auf der Konsole die Namen der Freigaben auslesen kann.
Danke ! Wolfgang :)

Nachtrag: Ich sehe du machst das über eine Konfig Datei. Also Übergabeparameter. Ja, werde ich auch so machen. In meiner Windows-Sicherung arbeite ich ja auch so.

(Aus /etc/samba/smb.share.conf könnte man es theoretisch auslesen.)
:unsure:
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.776
Punkte für Reaktionen
1.723
Punkte
314
weißt du evtl. wo ich die Namen der freigegebenen Ordner auslesen kann?
Auch das... jedoch würde ich die freigegebenen Ordner über ein Script auslesen wollen, anstatt mir dir Daten aus irgendeiner Config-Datei auszulesen. Das nachfolgende Script wirft dir alle internen freigegebenen Ordner aus, jedoch keine externen Datenträger (/volumeUSB und /volumeSATA).

Bash:
#!/bin/bash

while IFS= read -r volume; do
    [[ -z "${volume}" ]] && continue

    while IFS= read -r share; do
        [[ -z "${share}" ]] && continue

        if [[ "${share}" == /volumeUSB* || "${share}" == /volumeSATA* ]]; then
            continue
        else
            echo "${share}"
        fi

    done <<< "$( find ${volume}/* -type d ! -path '*/lost\+found' ! -path '*/\@*' ! -path '*/\$RECYCLE.BIN' ! -path '*/Repair' ! -path '*/System Volume Information' -maxdepth 0 )"
done <<< "$( find /volume* -maxdepth 0 -type d )"
unset volume share
 

Woolfgang359

Benutzer
Mitglied seit
17. Nov 2010
Beiträge
93
Punkte für Reaktionen
11
Punkte
8
Danke, ja, ich sehe das mittlerweile auch so.
Ich werde das lediglich für einen Hinweis verwenden, falls ein Freigabeordner vorhanden ist, aber nicht gesichert wird.
(Natürlich in der Konfig abschaltbar, falls ich das explizit so haben will.)

PS: Dein Script hilft mir echt gut mit Code-Schnippsel, um das was ich mittlerweile vergessen habe wieder aufzufrischen. Danke!
 


 

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