[gelöst] Mailbenachrichtigung für RSYNC über SSH

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
holger.lehn
Beiträge: 81
Registriert: 06.04.2004 22:11:38
Wohnort: Waghäusel

[gelöst] Mailbenachrichtigung für RSYNC über SSH

Beitrag von holger.lehn » 03.06.2006 20:32:52

Hallo,

ich tausche Daten mit Freunden aus und wir haben uns ein RSYNC / SSH Kontrukt über aus- und eingangsverzeichnisse gebaut...funktioniert auch, aber ....

Ich will, dass der Empfänger der Daten eine Mail kriegt, wenn was für ihn übertragen wurde. Über die Errorlevel kriege ich nur raus ob RSYNC ohne Fehler gearbeitet hat, aber nicht ob tatsächlich auch eine Übertragung von Daten stattgefunden hatte.

Hat jemand eine Idee wie ich das am besten hinkriege ??

BTW: Wenn jemand Interesse hat, kann ich mein Script auch gerne mal bereitstellen...das erste mal mit Funktionen, und CASE Konstukten ! 8)
Zuletzt geändert von holger.lehn am 06.11.2006 21:43:45, insgesamt 1-mal geändert.
Gruss
Holger

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 04.06.2006 00:03:25

Ich würde ein Logfile vom "rsync" erstellen und anschließend verarbeiten. Damit könntest du auch die übertragenen Dateien in deinem Mail anführen.
Möglicherweise genügt es aber auch, wenn du die Anzahl der Dateien im jeweiligen Eingangsverzeichnis vergleichst:

Code: Alles auswählen

OLDCOUNT=`ls -l "$INPUTFOLDER" | wc -l`
rsync ...
NEWCOUNT=`ls -l "$INPUTFOLDER" | wc -l`
if [ "$OLDCOUNT" -ne "$NEWCOUNT" ]; then
  echo todo: send mail
fi
Wenn Unterverzeichnisse auch erlaubt sind, ist es vielleicht besser "find" statt "ls" zu benutzen.

Gruß
gms

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 04.06.2006 00:10:29

Die Idee ist gut, schlägt aber fehl, wenn Dateien überschrieben worden aber keine neuen übertragen worden.

Mal so ne ganz wilde Idee: md5-Summen. Aber gerade mal in der manpage steht, md5sum kann nur Dateien verarbeiten. Schade. Aber vielleicht geht in der Richtung trotzdem was. Wenn man auch dabei, die verursachte Systemlast beachten sollte.

Hth,
deadeye

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 04.06.2006 00:16:57

deadeye hat geschrieben:Mal so ne ganz wilde Idee: md5-Summen. Aber gerade mal in der manpage steht, md5sum kann nur Dateien verarbeiten.
das würde schon auch funktionieren:

Code: Alles auswählen

find "$INPUTFOLDER" -ls | md5sum -
[edit]

Code: Alles auswählen

OLDMD5=`find "$INPUTFOLDER" -ls | md5sum -` 
rsync ... 
NEWMD5=`find "$INPUTFOLDER" -ls | md5sum -` 
if [ "$OLDMD5" != "$NEWMD5" ]; then 
  echo todo: send mail 
fi
[/edit]

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 04.06.2006 17:53:50

Ich wollte erst sagen, dass ja auch nur bei neuen/gelöschten Dateien funktioniert, aber die md5-Summe wird ja auch über der Dateigröße, die in dem ls mit enthalten ist, gebildet.
Somit geht es auch für Änderungen, und zusätzlich ist ja das Änderungsdatum enthalten, und somit sollte es sogar gehen, wenn die Datei geändert wurde, aber die Größe gleich ist.

Schön.

Gruß
deadeye

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 04.06.2006 17:59:44

deadeye hat geschrieben:somit sollte es sogar gehen, wenn die Datei geändert wurde, aber die Größe gleich ist.
Natürlich. Bei einer guten Hashfunktion wird beim umkippen eines einzigen Bits der Daten auf dem der Hash berchnet wird min 50% der Bits im Hashvalue gekippt.

markus

Benutzeravatar
holger.lehn
Beiträge: 81
Registriert: 06.04.2004 22:11:38
Wohnort: Waghäusel

Beitrag von holger.lehn » 05.06.2006 11:04:56

Hi,

das sind ja interessante Vorschläge.

Die Idee mit dem Logfile hatte ich auch. Die mit MD5 klingt sehr interessant, aber ....

1. Die Zieldaten finden sich auf einem ganz anderen Rechner. Wie soll ich da die MD5 Daten über LS oder find abfragen ?

2. Es handelt sich auch um Unterordner (z.b. wollen wir quasi über Kreuz auch Backups machen,. z.B. unsere Programme und Konfigurationen /etc und so Sachen

3. Funktioniert trotz der Kommandozeile

Code: Alles auswählen

rsync -avzru -e ssh /daten/transfer(holger/ausgang transfer@zielserver:/daten/transfer/holger/eingang --progress --delete
Das löschen nicht. Im lokalen netz ohne SSH funktioniert das wunderbar.
Gruss
Holger

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 05.06.2006 14:50:43

holger.lehn hat geschrieben:Die Idee mit dem Logfile hatte ich auch. Die mit MD5 klingt sehr interessant, aber ....

1. Die Zieldaten finden sich auf einem ganz anderen Rechner. Wie soll ich da die MD5 Daten über LS oder find abfragen ?
ist auch nicht schwierig:

Code: Alles auswählen

gms@gms1:~$ ssh gms4 'find /home/gms -ls | md5sum -'
ac0f6a432d83ba87b73cdc0124920ff0  -

Gruß
gms

Antworten