automatisches Backup eines ("von einem") eingesteckten USB-Geräts

Status
Für weitere Antworten geschlossen.

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314
Keine Ahnung warum das bei dir mit ssmtp auf der Konsole funktioniert und bei mir nicht. Loggst du dich denn als "admin" oder als "root" auf der Konsole an? Soweit ich weiß, besitzt "root" standardmäßig keine E-Mailadresse, daher könnte das mit dem Eintrag in die /etc/ssmtp/revalias schon hinkommen, da hier ja explizit für "root" eine Mail hinterlegt wird. Für den DSM-Admin habe ich auch ein Mailkonto eingerichtet (das Gleiche wie auf der Konsole)

Und dill88 Script überscheibt nur die Zeilen, die das neue Log benötigt. Älter Einträge erscheinen dann weiterhin, unterhalb der überschiebenen Zeilen. So jedenfalls bei mir. Daher habe ich das Script jetzt nochmal etwas angepasst.

Code:
#!/bin/sh

# Backup-Quelle
Source=volumeUSB1/usbshare/ 

# Backup-Ziel
Target=/volume1/Backup

# Rsync-Logdatei
Rsync=/volumeUSB1/usbshare/rsync.log

# E-Mailforumar
Mail=/volumeUSB1/usbshare/mail.log 

# Dateiinhalte löschen
cat /dev/null > $Rsync 
cat /dev/null > $Mail 

# rsync ausführen
/usr/syno/bin/rsync -avh --delete "$Source" "$Target" >> $Rsync 2>&1

# E-Mailformular aufbauen
echo  "To: recipient_email@example.com" >> $Mail
echo  "From: myemailaddress@example.com" >> $Mail
echo  "Subject: Rsync-Protokoll" >> $Mail
echo  "" >> $Mail

cat $Rsync >> $Mail

/usr/bin/ssmtp recipient_email@example.com < $Mail
 

Hafer

Benutzer
Mitglied seit
03. Okt 2014
Beiträge
855
Punkte für Reaktionen
12
Punkte
38
Loggst du dich denn als "admin" oder als "root" auf der Konsole an? Soweit ich weiß, besitzt "root" standardmäßig keine E-Mailadresse, daher könnte das mit dem Eintrag in die /etc/ssmtp/revalias schon hinkommen, da hier ja explizit für "root" eine Mail hinterlegt wird. Für den DSM-Admin habe ich auch ein Mailkonto eingerichtet (das Gleiche wie auf der Konsole)

Ich verwende das script als root von der Konsole, wie auch als admin über den Task scheduler. Hinterlegt ist im ControlPanel natürlich keine root@eigeneDomain, sondern meine stinknormale Adresse bei GMX.

Gruß Hafer
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314
@Hafer
Dann weiß ich auch nicht weiter. Ist ja auch Wurst, da es ja sowohl bei dir, als auch bei mir mit dem Mail versenden klappt!

Tommes
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.819
Punkte für Reaktionen
1.114
Punkte
754
Mein Skript überschreibt gar nichts, sondern erzeugt beim Start eine komplett neue Datei Protokoll.log. Ich habs gerade bei mir nochmal getestet, das funktioniert einwandfrei. Der cat /dev/null > bewirkt genau das Gleiche wie der Ersatz des >> durch ein >. Vielleicht ist das beim Umbauen etwas schief gelaufen. Aber ist ja auch schnurz, solange es bei Dir läuft. Ich wollte es nur übersichtlicher machen, nicht komplizierter. :)
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314
Oh, nicht falsch verstehen. Ich schätze deine Hilfe sehr und bin für jeden Tipp dankbar. Vielleicht habe ich hier im Eifer des Gefechtes wirklich etwas durcheinandergewürfelt. Das ist durchaus möglich, da ich ja ein bekennender "Anwender mit gefährlichem Halbwissen" bin. Und wie du ja selber sagt, ist ja auch schnurtz... der Weg ist das Ziel und wenn es am Ende so funktioniet wie ich mir das vorstelle, ist ja alles gut. Ich bastel auf jeden Fall noch ein wenig damit rum. Bringt mich ja nur weiter nach vorne.

Auch an Hafer mein Dank für deine Hinweise und Tipps. Ich werde dem auf jeden Fall nochmal nachgehen.

Tommes
 

Hafer

Benutzer
Mitglied seit
03. Okt 2014
Beiträge
855
Punkte für Reaktionen
12
Punkte
38
Also so:

Rich (BBCode):
#!/bin/sh

# Backup-Quelle
Source=volumeUSB1/usbshare/ 

# Backup-Ziel
Target=/volume1/Backup

# E-Mailforumar
Mail=/volumeUSB1/usbshare/mail.log 

# E-Mailformular aufbauen
echo  "To: recipient_email@example.com" > $Mail  # hier das >
echo  "From: myemailaddress@example.com" >> $Mail
echo  "Subject: Rsync-Protokoll" >> $Mail
echo  "" >> $Mail

# rsync ausführen
/usr/syno/bin/rsync -avh --delete "$Source" "$Target" >> $Mail 2>&1

/usr/bin/ssmtp recipient_email@example.com < $Mail

Gruß Hafer
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.819
Punkte für Reaktionen
1.114
Punkte
754
Source und Target sind eine sehr gute Idee. Und $Mail bzw. mail.log gefallen mir auch gut. Hafer, Dir ist allerdings beim Kopieren der Slash vor dem Source-Pfad verloren gegangen. ;)

Edit: Stimmt gar nicht, Tommes hatte den Slash schon in Beitrag 21 weggelassen. *gg*
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314
Ah. Jetzt. Ja!

Jetzt hab auch ich es kapiert. Danke dil88 für den Wink mit dem Zaunpfahl und Hafer für das einstielen des selben. Hab das Script jetzt genauso bei mir am laufen wie du @Hafer es angepasst hast. So läuft es perfekt. Danke euch beiden für die Unterstüzung. Damit kann der TE bestimmt auch was anfangen.

Tommes
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314

Hafer

Benutzer
Mitglied seit
03. Okt 2014
Beiträge
855
Punkte für Reaktionen
12
Punkte
38
Und um mal wieder einen Beitrag zum Thema zu machen:

Die obige rsync Anweisung packt einfach jedes backup in den Ordner $Target. Ohne Versionsstände. Etwas Milderung erhält man, wenn man geänderte oder gelöschte Dateien gegenüber dem jeweils letzten Backup-Durchlauf in einen Ordner packt, dessen Name sich aus Datum und Zeit zusammensetzt:

Rich (BBCode):
NOW=$(date +"%Y%m%d-%H%M%S")

# rsync ausführen
/usr/syno/bin/rsync -avb --delete "$Source" "$Target" --backup-dir=$Target/$NOW >> $Mail 2>&1

Im Ordner $Target liegt dann das jeweils amtliche Backup, in den Ordnern $Target/$NOW die jeweiligen Diffs zum Vorgänger. Von Zeit zu Zeit wäre dann allerdings Aufräumen angeraten ...

Gruß Hafer
 

Hafer

Benutzer
Mitglied seit
03. Okt 2014
Beiträge
855
Punkte für Reaktionen
12
Punkte
38
Und dann noch der Hinweis, dass das Ganze so richtig Unordnung schaffen kann, wenn man mehrere USB-Sticks gleichermaßen behandelt. :cool: Abhilfe schafft hier ein je USB-Stick angepasstes $Target

Gruß Hafer
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.139
Punkte für Reaktionen
1.112
Punkte
314
Das Stimmt natürlich. Das Script steht ja auch nur Beispielhaft für die Funktionsfähigkeit. Alles andere ist dann Feintuning und individuelle Vorlieben. Ich habe mir das von dir aufgeführte Datumsformat z.B. ein wenig umgebaut und in den E-Mail Betreff gesetzt, anstatt damit eine Ordnerbasierte Versionierung auszulösen. Jedem so wie er mag.

Code:
NOW=$(date +"%d.%m.%Y %H:%M:%S")
echo  "Subject: Rsync-Protokoll vom $NOW Uhr" >> $Mail

Jedenfalls war das mal wieder eine schöne Übung für mich im Umgang mit Linux und dem Aufbau von Scripten. Vor allem macht mir sowas super viel Spaß und dank euch kommt man dann auch noch zu einem sehr guten Ergebnis.

Tommes
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

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