'
Gute grafische Backup-Programme gibt es mittlerweile auch unter Linux en masse, jedoch hänge ich nach wie vor an meinem selbst geschriebenen Backup-Skript, welches das freie Tool rsync für die (inkrementelle) Sicherung auf eine externe Festplatte verwendet. Der Grund hierfür ist eigentlich recht simpel: ich konnte bislang keine Backup-Software finden, welche meinen Anforderungen hundertprozentig gerecht werden konnte. Außerdem arbeiten Skripte zumindest subjektiv schneller und zuverlässiger. Das alles soll Grund dafür sein, euch das Bash-Skript einmal vorzustellen.
Update November 2017: Es freut mich, dass mein kleines Skript in den vergangenen Jahren noch deutlich erweitert wurde. Auf GitHub/MegaV0lt/MV_Backup findet ihr die Weiterentwicklung und im Digital-Eliteboard gibt es Support.
Das „Kernstück“ des Skriptes bildet rsync, welches beliebig viele Verzeichnisse mit einem Zielverzeichnis vergleicht und synchronisiert. Dies verläuft nur in eine Richtung (unidirektional), was bedeutet, dass mögliche Änderungen im Zielverzeichnis verloren gehen, da die Verzeichnisse nicht zusammengeführt (merge) werden können. Bei einem Backup ist das aber unerheblich, da das Zielverzeichnis, in dem sich das Backup befindet, ohnehin nicht manuell verändert werden sollte.
Wird eine Datei im Quellverzeichnis erstellt, verändert oder gelöscht, so wird diese Datei von rsync in das Zielverzeichnis übertragen bzw. im Zielverzeichnis ebenfalls gelöscht. Sobald rsync mit der „Arbeit“ fertig ist, sind Quell- und Zielverzeichnis identisch.
Mehr Informationen zu rsync und dessen Funktionsweise, sind zum Beispiel im Wiki von ubuntuusers.de zu finden.
Mein Backup-Skript bietet darüber hinaus noch ein paar weitere nützliche Funktionen:
Abhängig von den Optionen von rsync sind zudem folgende Dinge möglich und standardmäßig eingestellt:
Da die Konfiguration nicht furchtbar kompliziert ist, sollte sie auch ohne größere Erfahrung mit Skripten zu bewältigen sein. Zudem helfen die Kommentare (#) im Skript bei der Einrichtung.
In der Variablen $RSYNC_OPT werden die Optionen gespeichert, mit denen rsync vom Skript aufgerufen wird (siehe auch man rsync). $MOUNT enthält optional den Mountpoint einer externen Festplatte, um überprüfen zu könne, ob diese korrekt angeschlossen und eingebunden wurde. $BAK_DIR gibt einen Ordner für gelöschte und veränderte Dateien an, wobei dabei die Variable $TARGET (Zielverzeichnis) verwendet werden kann.
Die Einstellungen der einzelnen Profile werden in sogenannten Arrays gespeichert (n ist dabei durch eine Zahl zu ersetzen):
title[n]="" arg[n]="" source[n]="" target[n]="" log[n]="${target[n]}/${title[n]}_log.txt" exfrom[n]="$(mktemp -t "tmp.rsync.XXXX")" cat > "${exfrom[n]}" <<EOF EOF |
Im Array title[n] wird eine Bezeichnung und in arg[n] ein Argument (i.d.R. bestehend aus einem Buchstaben), mit dem das Profil aufgerufen wird, gespeichert. Beide Angaben werden in der Hilfe und bei der Ausführung des Skriptes angezeigt.
In source[n] stehen die Quellverzeichnisse, wobei (nur) in diesem Fall Pfadangaben, welche ein Leerzeichen enthalten, von \“ umschlossen werden müssen. Das Zielverzeichnis wird mit target[n] festgelegt.
Zwischen <<EOF und EOF kann man Dateien und Verzeichnisse angeben, welche nicht gesichert werden sollen. Hierbei ist pro Zeile lediglich 1 Pfadangabe erlaubt, wobei Leerzeichen diesmal nicht besonders behandelt werden dürfen.
Der Pfade zur Logdatei in log[n] und zur temporäre Datei in exfrom[n] müssen nicht zwingend geändert werden.
Wie das Skript korrekt aufgerufen wird, ist folgendem Screenshot zu entnehmen:
Und noch einmal in Worten: um ein bestimmtes Profil zu starten, muss an das Skript die Option -p, gefolgt von dem entsprechenden Argument, übergeben werden. Alternativ kann man mit der Option -a sämtliche Profile auf einmal starten oder mehrere Profilaufrufe hintereinander auflisten (-p ARGUMENT -p ARGUMENT2).
Darüber hinaus gibt es noch die Option -m, die als Argument Quell- und Zielverzeichnis erwartet. In diesem Fall, müssen Verzeichnisse, die Leerzeichen enthalten, lediglich von „ umschlossen werden.
Mit -s wird der Computer nach dem Backup automatisch heruntergefahren und die Option -h zeigt die Hilfe an.
Mehr gibt’s eigentlich nicht zu sagen, außer vielleicht noch, dass ich hoffe, dass das Skript auch bei euch fehlerfrei läuft; getestet habe ich es in der jetzigen Version mit Ubuntu 10.10 und Arch Linux.
Stefan hat mich in den Kommentaren auf Fehler aufmerksam gemacht, die auftreten, wenn das Skript als Cron-Job aufgerufen und wenn als Quelle das Root-Verzeichnis (/) angegeben wird. Zudem hat er vorgeschlagen, auf Systemen ohne grafische Oberfläche echo anstatt notify-send zu verwenden. Praktischerweise hat er auch gleich passende Lösungen geliefert, welche ich in fast identischer Form übernommen habe.
An dieser Stelle nochmals vielen Dank, Stefan, für die Verbesserungsvorschläge und Lösungsansätze… und für das Testen des angepassten Skriptes.
Folgende Änderungen sind in die neue Version eingeflossen:
Wer das Skript bereits verwendet, kann ohne Probleme auf die verbesserte Version umsteigen. Dazu einfach die bisherigen Profileinstellungen in das neue Skript kopieren.
Update (13. Juni 2011): Ich hatte noch einen kleinen Bug eingebaut, der zum Glück von Stefan bemerkt und mittlerweile korrigiert wurde.
Stefan hat das Backup-Skript auf seinem Blog um einige nützliche Funktionen erweitert:
Zwar nutze ich „mein“ Skript schon lange nicht mehr (sondern stattdessen ein simples Skript mit rdiff-backup), doch erfreut es sich anscheinend weiterhin großer Beliebtheit. In den Kommentaren findet ihr mittlerweile zahlreiche Anpassungen und Erweiterungen. Hervorgetan hat sich dabei insbesondere Stefan B., welcher neben den im letzten Update genannten Features und einigen Komfortfunktionen noch folgendes implementiert hat:
Stefans Skript und eine zugehörige Konfigurationsdatei findet ihr jeweils aktuell unter folgenden Links:
Da die Kommentarfunktion des Blogs nur wenig geeignet für Support und gegenseitigen Austausch ist, wurde von Stefan ein entsprechender Thread im Digital Eliteboard angelegt:
Bitte nutzt diesen Thread als Anlaufstelle für konkrete Fragen zum Skript. Ansonsten dürft ihr natürlich weiterhin hier kommentieren.
Update: entsprechender Beitrag in Stefans Blog: Backup-Skript mit eMail-Funktion
Das Skript könnt ihr auf der nächsten Seite herunterladen ;-).
Seiten: 1 2
Doch leider kommst du ein wenig zu spät, da ich, Janek Bettinger, meinen 2009 gestarteten Blog im Jahr 2011 nach 46 Beiträgen mit insgesamt 721 Kommentaren eingestellt habe.
Ich schrieb v.a. über Ubuntu und GNU/Linux, sowie vereinzelt über WordPress und sonstigen Themen des Internets.
Die Kommentarfunktion steht nur noch für ausgewählte Beiträge zur Verfügung.
Durch zahllose Updates des zugrundeliegendes Blogsystems in den vergangen Jahren, kann es an der ein oder anderen Stelle zu kleineren Fehlern kommen.
150 Kommentare zu Komfortables Backup-Skript (rsync) (Update)
» Kommentar schreibenJogi29
18. April 2014 um 14:11
vielen dank für die Antwort, aber das ist ein wenig zu hoch für mich.
Also der Zugriff auf den entfernten PC per SSH ist mit User und Passwort geschützt und wird abgefragt, diese müssten also beim Ausführen des Scriptes mit übergeben werden, das Script wird in der Nacht ausgeführt.
Kannst du mir ein Beispiel geben, wie ein Profil aussehen müsste. Werden alle ntwendigen Informationen in
rsync_opt[8]=""
eingetragen? So?Vielen Dank im Voraus
Bearbeitet von Janek am 2.6.2014: Codeblöcke eingefügt.
Diesen Beitrag zitieren
Jogi29
18. April 2014 um 15:04
Backup startet (Profil: "Backup")
sending incremental file list
rsync: link_stat "/root/root@mein.dyndns.org" failed: No such file or directory (2)
bekomme immer diese Fehlermeldung
Diesen Beitrag zitieren
Jogi29
21. April 2014 um 12:53
irgend etwas stimmt da nicht, ich habe das Profil mit
ergänzt, wieso erhalte ich dann den Fehler laut Post vom 18.04.2014 mit
/root/root
… ?Wenn ich das Ganze über
starte, klappt die Sicherung.
Bearbeitet von Janek am 2.6.2014: Codeblöcke eingefügt.
Diesen Beitrag zitieren
Dieter
29. Mai 2014 um 11:56
Vielen Dank für diesen hilfreichen Beitrag. Ich nutze rsync schon sehr lange zum Backup von privaten Daten wie Fotos und Musik. Mit den Infos in diesem Beitrag habe ich meine Skripte nun noch einmal deutlich verbessern können. Danke!
LG, Dieter
Diesen Beitrag zitieren
Jogi29
30. Mai 2014 um 12:49
@Janek
konntest du die SSH-Optionen überprüfen?
Ich würde mich darüber freuen, denn das Script ist super.
Viele Grüße
Jürgen
Diesen Beitrag zitieren
Janek
2. Juni 2014 um 23:18
Hallo Jogi29,
da habe ich dich nun aber lange warten lassen…
Zitat Jogi29 ↑:
Die Zugangsdaten ungeschützt im Skript zu hinterlegen ist a) keine gute Idee und b) funktioniert vermutlich ohnehin nicht. Du musst also mit Public Keys arbeiten. Siehe dazu auch Authentifizierung über Public-Keys (und obige Links).
Laut Fehlermeldungen und Config-Ausschnitt wird ein ungültiges Ziel verwendet.
Probiere mal folgendes aus:
Falls es nicht klappt, kannst du dir mit folgender Zeile ausgeben lassen, welcher Befehl ausgeführt wurde (man beachte das
echo
):Getestet habe ich obige Anweisungen nicht!
Viele Grüße,
Janek
Diesen Beitrag zitieren
Jogi29
3. Juni 2014 um 10:35
Hallo Janek,
die Authentifizierung habe ich über deinen Link vom 17.04.2014 realisiert 😉
Wenn ich deine Einstellungen verwende, erhalte ich folgende Meldungen:
Backup startet (Profil: "Backup")
sending incremental file list
rsync: change_dir#4 "/root//Dateien/2014-06-03" failed: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(908) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
Backup wurde abgeschlossen
Weitere Informationen sowie Fehlermeldungen sind in der Datei "root@mein.dyndns.org:/mnt/lan/Sicherung/2014-06-03_Backup.log" gespeichert.
Backup(s) abgeschlossen.
Ich verstehe die Zeile "rsync: change_dir#4 "/root//Dateien/2014-06-03" failed: No such file or directory (2)" nicht, meine Pfade lauten doch ganz anders.
Dyndns und Port habe ich natürlich entsprechend angepasst.
Den von dir geposteten Befehl kann ich ja nur ausführen, nachdem das Backup abgeschlossen ist, oder sehe ich das falsch?
Dann bekomme ich die Ausgabe
rsync --log-file="" --exclude-from="" --backup-dir="" ""
Viele Grüße
Jürgen
Diesen Beitrag zitieren
Jogi29
10. Juli 2014 um 18:01
möchte nochmals ganz vorsichtig nachfragen, ob es eine Lösung zu meinem geposteten Problem gibt.
Ich bekomme es einfach nicht hin, dass eine ssh-Verbindung aufgebaut wird. Die Authentifizierung müsste in Ordnung sein, denn wenn ich rsync per Befehlzeile aufrufe, klappt auch die Verbindung zum ssh-Partner.
Diesen Beitrag zitieren
Janek
10. Juli 2014 um 22:35
Zitat Jogi29 ↑:
Hallo Jürgen,
fragen darfst du natürlich so viel du willst. Ich habe eher ein ungutes Gefühl, dich immer so lange warten zu lassen 😉 .
Ich werde dir gleich noch eine E-Mail zukommen lassen.
Ansonsten ist für derartige Fälle ubuntuusers.de: Forum – Shell und Programmieren sehr zu empfehlen. Die dortige Community hat mir früher auch schon des Öfteren geholfen.
Viele Grüße,
Janek
Diesen Beitrag zitieren
Janek
11. Juli 2014 um 14:49
Für alle Mitleser: für die Probleme, die bei Jogi29 auftraten, war vermutlich das Fehlern der rsync-Option
s
(no space-splitting; wildcard chars only) verantwortlich. Diese ist in der Standard-Konfiguration enthalten und sollte nicht entfernt werden.Diesen Beitrag zitieren
Jogi29
11. Juli 2014 um 16:04
die ssh-Verbindung klappt jetzt und die Sicherung folglich auch.
Was ich allerdings noch nicht geschafft habe, dass der Ordner der gelöschten Dateien und die Log-Dateien auch auf dem entfernten PC angelegt werden, bisher befinden sich die 2 Dinge auf meinem PC unter /root und dort unter der Adresse für die ssh-Verbindung mit dem ganzen Verzeichnisbaum.
Vielleicht hat noch jemand eine Idee, wie man dies auch noch auf den entfernten PC bekommt.
Bisher haben wir folgendes versucht:
BAK_DIR=“$TARGET/Geloeschte Dateien/$(date +%F)“
geändert in
BAK_DIR=“./Geloeschte Dateien/$(date +%F)“
leider ohne Erfolg, dann werden die „Geloeschten Dateien“ direkt in /root angelegt.
Diesen Beitrag zitieren
René
25. August 2014 um 19:26
Hallo,
ich habe dieses tolle script gefunden und setze es jetzt auch ein, hatte etwas Probleme weil es im Terminal klappte aber per cronjob eben nicht… jetzt habe ich es gefunden und läuft.
Wenn der cronjob das script ausführt und ich grad im Terminalfenster bin sieht man es ja nicht, ist das so…?
Gibt es irgendwo die Möglichkeit mit sendmail etwas einzubauen, dass wenn die Sicherung fertig ist ich eine Mail bekomme..?
Vielen Dank
René
Diesen Beitrag zitieren
Jogi29
26. August 2014 um 11:40
schau dir mal den Beitrag von Daniel am 28. Juni 2011 um 13:25 Uhr an, das müsste etwas für dich sein.
Diesen Beitrag zitieren
René
27. August 2014 um 14:23
Zitat Jogi29 ↑:
ja vielen Dank, dass werde ich mal integrieren, dazu habe ich aber eine Frage.. reicht es aus wenn ich hier sendmail habe, dass auf meinem Cubietruck installiert ist. Oder muss es zwingend dieses Postfix sein… was auch noch den Apache mit installiert.
Diesen Beitrag zitieren
Janek
27. August 2014 um 14:32
Zitat René ↑:
Also ich habe eben bei mir lediglich sendmail installiert und konnte daraufhin wie auf Stackoverflow beschrieben Mails versenden. Mails, die über solch ein Quick-and-Dirty-Mailsystem versendet werden, werden jedoch oftmals als Spam eingestuft oder direkt abgewiesen.
Gruß
Diesen Beitrag zitieren
René
28. August 2014 um 23:21
also das script läuft aber der Mailversand scheitert an der Meldung in Zeile 256 mit „uudeview“
dies sollte ja in liegen
„MAIL=“/usr/local/bin/uudeview“ #statt mail, damit Log als Anhang wird
liegt es aber bei mir nicht. Was ist dieses uudeview..?
Diesen Beitrag zitieren
René
5. September 2014 um 14:34
Zitat René ↑:
kann da nochmal evtl. jemand einen Tipp geben, da der Mailversand noch nicht funktioniert…
Diesen Beitrag zitieren
Stefan Blochberger
11. September 2014 um 13:52
Hi, ich habe die Konfiguration deutlich vereinfacht, in dem ich die Profilnummer [n] durch eine Variable ersetzt habe, die automatisch hoch zählt. Kannst Du gerne übernehmen.
Bearbeitet von Janek am 11.09.2014: Code gekürzt und formatiert. Stefans vollständiges Skript findet ihr hier. Vielen Dank an dieser Stelle auch von mir!
Diesen Beitrag zitieren
René
11. September 2014 um 14:00
Ok ich werde es mir anschauen.. und sicher auch übernehmen.
Eine Mailfunktion ist aber nicht enthalten und die andere funktioniert bei mir leider nicht auf Grund des oben beschriebenen Fehlers…
Diesen Beitrag zitieren
Janek
11. September 2014 um 14:17
Zitat René ↑:
Hallo René,
Stefan hat sich wohl nicht auf deinen Kommentar bezogen. Funktioniert bei dir uudeview unabhängig vom Skript? Erst einmal solltest du den Mailversand zum Laufen bekommen, bevor du das Skript entsprechend anpasst.
Die Ubuntu Users (de) werden dir sicherlich helfen können.
Gruß
Diesen Beitrag zitieren
René
11. September 2014 um 14:52
Zitat Janek ↑:
ich kenne dieses uudeview gar nicht.. kann ja mal danach suchen..!
Noch dazu nutze ich gar kein Ubuntu, sondern ein Debian, vllt deshalb ist es nicht vorhanden…!
Diesen Beitrag zitieren
Stefan Blochberger
11. September 2014 um 15:05
Das mit der Mailfunktion schaue ich mir gerne mal an und baue eine entsprechende Funktion ein. Mir schwebt vor, dass man das Mailen via Parameter (-e my@email.de) aktiviert.
Oder wäre es sinnvoller das in die Konfiguration einzubauen?
Diesen Beitrag zitieren
René
11. September 2014 um 15:09
ja das ist absolut OK, dann kann man es entweder nutzen oder eben nicht für die Leute die dies nicht haben wollen…
Bei mir arbeitet das Script absolut zuverlässig, aber ich bekomme eben keine Rückmeldung… schaue dann immer nach ob er es auch gemacht hat…
Diesen Beitrag zitieren
Jogi29
11. September 2014 um 16:33
das wäre eine klasse Erweiterung.
Diesen Beitrag zitieren
René
11. September 2014 um 18:34
ich habe jetzt nochmal eine Frage dazu… Habe die Änderung komplett übernommen, meine Pfade eingegeben.
Normal starte ich ja das Script über ein cronjob aber um es zu testen gebe ich immer
./backup.sh -p h
Da bekam ich einen Fehler, was ist mir passiert, ich habe in der Konfig das
arg[$p_nr]=“r“
übersehen, ich hatte da ein h drin für Hilfe wohl, aber was bedeutet dieses „r“
Diesen Beitrag zitieren
Stefan Blochberger
11. September 2014 um 19:18
Aus der Konfigdatei:
# arg[n] Argument, mit dem das jeweilige Profil gestartet wird (-p arg[n])
Bedeuted, wenn Du arg[$p_nr]=”r” eingegeben hast, musst Du auch so aufrufen:
./backup.sh -p r
oder ./backup.sh -a für alle Profile
oder ./backup.sh -h für die Hilfe
Diesen Beitrag zitieren
Stefan Blochberger
13. September 2014 um 09:30
Eine erste Version mit eMail-Versand habe ich fertig. Läuft mit sSMTP und mpack. Aufruf mit -e my@email.de oder -e root wenn in ssmtp konfiguriert.
Hier die Dropbox-Links:
Skript: https://db.tt/OstCDyP5
Konfig: https://db.tt/mOEZPR54
Es findet (noch) keine Prüfung statt, wie groß das Archiv ist.
Diesen Beitrag zitieren
Stefan Schmors
13. September 2014 um 16:37
Hallo,
meine Frau hat dieses schöne Skript nun schon seit längerem im Einsatz. Da ich der einzige Guru in der Familie bin fehlen mir noch zwei Dinge zum perfekten Glück:
1. wenn meine Frau ihren Sicherungsstick einschiebt, soll das Sicherungsskript automatisch gestartet werden. Ich denke mit Regeln für „udev“ (opensuse) müsste das machbar sein. Hat jemand von Euch so was schon gemacht?
2. Wenn der Sicherungsstick voll zu werden droht, sollte er sich melden und vielleicht auch anbieten, dass alte, gelöschte Dateien jetzt endgültig weggeworfen werden oder wenigstens, dass sie sich einen neuen Stick kaufen muss.
Weiterhin DANKE für Euer prima skript!
Diesen Beitrag zitieren
Janek
13. September 2014 um 17:03
Hallo Stefan,
Zitat Stefan Schmors ↑:
Mittels folgenden Befehls lässt sich zumindest schon einmal prüfen, ob mehr als
THRESHOLD
% der Platte belegt sind:Gruß
Diesen Beitrag zitieren
Stefan Blochberger
14. September 2014 um 09:18
Zitat Stefan Blochberger ↑:
Ich habe nun noch einen kleinen Statusbericht in die eMail mit eingebaut:
http://i.imgur.com/Vlx08KR.png
Die Links sind aktuell
Diesen Beitrag zitieren
Jogi29
18. September 2014 um 15:05
Hallo Stefan,
habe das geänderte Script mit eMail-Versand getestet, bekomme aber folgenden Fehler:
Bearbeitet von Janek am 18.09.2014: Codeblock eingefügt und sinnvoll gekürzt.
Diesen Beitrag zitieren
Janek
18. September 2014 um 15:12
Zitat Jogi29 ↑:
In Stefans erweitertem Skript hat sich ein falscher Strich eingeschlichen. Ersetze in der mit
tar --create
beginnenden Zeile das-–
vorabsolute-names
durch--
.Stefan wird das in der Dropbox bestimmt auch noch korrigieren.
Gruß
Diesen Beitrag zitieren
Stefan Blochberger
18. September 2014 um 15:20
Ui, wie kommt der denn da rein? Hab das Skript geändert. Vielen Dank für den Hinweis
Hier die Dropbox-Links:
Skript: https://db.tt/OstCDyP5
Konfig: https://db.tt/mOEZPR54
Diesen Beitrag zitieren
Jogi29
18. September 2014 um 15:31
vielen Dank für die schnelle Hilfe.
Diesen Beitrag zitieren
René
18. September 2014 um 15:34
ich habe jetzt mal 2 Fragen dazu, da ich jetzt erst wieder dazu komme…
Ist das Script irgendwie in zwei Teile erstellt, oder..?
Die zweite Frage, du schreibst weiter oben..
„Eine erste Version mit eMail-Versand habe ich fertig. Läuft mit sSMTP und mpack.“
Was ist dieses sSMTP und mpack, muss ich ich jetzt irgendwas installieren..?
Ich habe auf meinem System ein einfaches Debian ohne irgendwelche zusätzlichen Installationen für Mails senden, da ich nur backups machen möchte wollte ich eine einfache Rückmeldung über ein gemachtes Backup per Mail haben.
Was Standard ist sollte sendEmail sein, man beachte das große „E“, dies ist nur für das senden gedacht soweit ich das weiß.
Diesen Beitrag zitieren
Stefan Blochberger
18. September 2014 um 16:12
Ich habe mal was eingebaut:
https://dl.dropboxusercontent.com/u/1490505/VDR/backup-321tux/backup-321tux.zip
Du musst es aber die Variablen in der Conf dazu ausfüllen und MAILPROG=sendEmail eintragen
Ich habe das noch nicht getestet. sendEmail kannte ich nicht. Ich habe schon seit Ewigkeiten ssmtp drauf…
Diesen Beitrag zitieren
René
19. September 2014 um 02:22
ich habe das heute mal getestet, dass Script arbeitet aber ich bekomme keine Mail.
Eingetragen habe ich alles soweit, werde morgen nochmal etwas probieren, evtl. muss ich auf meinem System das auch noch irgendwie konfigurieren..!
Diesen Beitrag zitieren
Stefan Blochberger
19. September 2014 um 07:30
Ich bin heute den ganzen Tag unterwegs und kann wahrscheinlich erst morgen wieter testen.
Am einfachtsen wird sein, wenn Du sendEmail aus der Kommandozeile maneulle laufen lässt und wenn es klappt die Zeile im Skript so anpasst oder mir zukommen lässt.
Ich habe mir dazu ein kleines Extra Skript zum testen gebastelt. das nur dazu dient.
Anleitung zu sendEmail: http://j.mp/Xo69II
Du solltest zum testen auch -v anwenden
Diesen Beitrag zitieren
Stefan
19. September 2014 um 07:48
Hier mein mailtest.sh Skript: https://dl.dropboxusercontent.com/u/1490505/VDR/backup-321tux/mailtest.sh
Bei sendEmail habe ich ein -v mit eingebaut.
Wenn es am Ende funktioniert, dann gib bitte bescheid, wie sendEmail aufgerufen wird, damit ich es im Skript aktualisieren kann.
Für TLS müssen aber bestimmte Pakete installiert sein! Siehe: http://j.mp/Xo69II
Diesen Beitrag zitieren
Jogi29
19. September 2014 um 10:03
Hallo Stefan,
heute Nacht wurde die erste Sicherung mit Mailbenachrichtigung durchgeführt und folgende Dinge sind mir aufgefallen:
1. Bei mir werden mehrere Profile nacheinander abgearbeitet, also backup.sh mit -a aufgerufen, im Logfile Logs_2014-09-19-0117 tar wird aber nur auf das Log-File des 1. Profiles verwiesen.
2. Könnte man nicht direkt das Log-File des jeweiligen Profiles an die Mail anhängen und nicht über die tar-Datei gehen?
3. bei mir erfolgt die Sicherung mehrerer Profile in ein Verzeichnis, daher wird der Inhalt der Sicherungsziels mehrfach angezeigt. Könnte man den Inhalt des Sicherungsziels abschaltbar gestalten, damit nur der Status angezeigt wird?
4. Auf dem Sicherungsziel befinden sich die Log-Dateien und natürlich die einzelnen Sicherungsverzeichnisse, die Logdateien werden im Bericht der EMail schön untereinander aufgeführt, bei den Verzeichnissen gibt dann aber keinen Zeilenumbruch mehr, es wird alles hintereinander aufgeführt.
5. das letzte Profil ist bei mir eine Sicherung per ssh auf einen entfernten Rechner, hier wird vor „Inhalt des Sicherungsziels“ kein „Status des Sicherungsziels“ ausgegeben, ist dies nicht möglich oder erfolgt diese Ausgabe nur für das 1. Profil?
Viele Grüße
Jürgen
Diesen Beitrag zitieren
René
19. September 2014 um 16:07
so ich habe das Script mal getestet, es kommt folgender Fehler
Sep 19 15:58:30 localhost sendEmail[2820]: ERROR => You must specify at least one recipient via -t, -cc, or -bcc
Ich habe natürlich einen Empfänger eingetragen…! sollte ja der Parameter -t auch erfüllen, aber das ignoriert er wohl.
Dieser Eintrag mit putty auf der Konsole getestet funktioniert hier problemlos:
sendEmail -f 'AbsenderMail@gmx.de' -t 'EmpfängerMail@gmx.de' -u 'Backup' -m 'Message Text' -s 'mail.gmx.net' -xu 'User' -xp 'Password' -o tls=yes
was jetzt nicht so toll ist das man da dann das passwort sieht, aber geht
Bearbeitet von Janek am 26. Sept. 2014: Codeblöcke eingefügt.
Diesen Beitrag zitieren
Stefan Blochberger
19. September 2014 um 18:52
Auf die schnelle getestet und ein paar Änderungen eingebaut. Mailer war sendEmail und GMX meine Adresse. Bei mir ging es inkl. der verschiedenen Logs: http://i.imgur.com/rR76vie.png
Das Archiv und die Skripte sind aktualisiert. Bei Problemen bitte das Skript mit „bash -x backup-321tux.sh -a -e …“starten und die Ausgaben im Termnal begutachten
Zu den Fehlern von Jogi29:
1) kann ich nicht nachvollziehen
2) wäre möglich; aber Logs können sehr groß werden; darum tar
3) habe versucht eine Erkennung einzubauen. Bitte mal testen
4) habe es geändert. Bei mir gabs keine Probleme damit
5) Momentan wird einfach die TARGET-Variable verwendet. Ich schaue mir das demnächst mal an. Müsste möglich sein
Diesen Beitrag zitieren
René
20. September 2014 um 14:47
So ich habe heute noch einmal probiert und folgendes gefunden
Also entweder habe ich etwas falsches runtergeladen oder es existiert nicht, habe in deinem Script geschaut und gesehen das in der Befehlszeile für sendemail steht an der zweiten Stelle die
-t $MAILADRESS
aber diese in der *.conf Datei nicht vorhanden ist.Ok bei mir funktioniert dies nun auch, habe ich einfach in die conf Datei nachgetragen
Bearbeitet von Janek am 26. Sept. 2014: Codeblöcke eingefügt und Code stark gekürzt.
Diesen Beitrag zitieren
René
20. September 2014 um 15:05
ich habe heute gefunden warum es bei mir nicht geht.
Entweder habe ich das falsche Script runter geladen oder es existiert tatsächlich nicht…
Ich hatte im Script geschaut und gesehen das ja die für sendemail gebrauchte Empfänger Adresse fehlt…!
dies steht ganz unten im Script und wird bei sendemail so angegeben
-t $MAILADRESS
in der conf Datei fehlt diese…!
ich habe sie oben nachgetragen und siehe da es funktioniert auch…
Bearbeitet von Janek am 26. Sept. 2014: Codeblöcke eingefügt weiteren Code entfernt.
Diesen Beitrag zitieren
Stefan Blochberger
20. September 2014 um 15:25
MAILADRESS fehlt in der Konfig, weil der Wert beim Skriptaufruf mit „-e My@email.de“ übergeben wird. Und auch nur dann wird der Block zum Senden der Mail überhaupt aufgerufen! Kann ja sein, dass jemand keine Mail möchte.
Schau mal bei den Zeilen 77, 152, 160 und 252 nach.
Außerdem ist die aktuelle Version 20140920 – Also von heute
Diesen Beitrag zitieren
René
20. September 2014 um 15:48
OK, dann ist das irgendwo an mir vorbei gegangen…
Ich habe aber grad ein Hänger wo muss ich das jetzt angeben und irgendwo muss ja die Mailadresse stehen, mit der ich es schicke..?
Und noch ein Frage, wo muss ich genau eingeben wieviele Tage ich die Sicherungen aufheben möchte, dass fehlt mir noch..?
Danke
Diesen Beitrag zitieren
Stefan Blochberger
20. September 2014 um 15:53
Steht sogar in der Hilfe (skript.sh -h):
-e My@email.de
Wobei Du natürlich Deine eMail-Adresse angeben musst.
Ein Aufruf kann dann so aussehen, um am Ende die Mail an Beispiel@mail.de zu senden:
./backup-321tux.sh -a -e Beispiel@mail.de
Die Variablen in der *.conf müssen ausgefüllt sein
Diesen Beitrag zitieren
Stefan Blochberger
20. September 2014 um 16:34
Ich habe in Absprache mit Janek einen Forumsthread eröffnet, in dem man besser „diskutieren“ kann. Es sind alle eingeladen mitzumachen.
Das Forum hat über 500.000 Nutzer und ist hier zu finden: http://www.digital-eliteboard.com
Der direkte Link zum Thema ist: http://j.mp/1qjXaiJ
Diesen Beitrag zitieren
René
20. September 2014 um 17:05
sehr schön…! in diesem Forum bin ich sogar angemeldet 😉
Diesen Beitrag zitieren
Lukas Heier
13. April 2019 um 10:51
Hallo Janek,
hi @all,
ich bekomme immer folgende Fehlermeldung in meinem Skript:
rsync: link_stat „/root/root@mein.dyndns.org“ failed: No such file or directory found (2)
Wie kann ich ihm das richtige Directory mitgeben?
Diesen Beitrag zitieren