sirhnry
Goto Top

Probleme bei crontab und rsync Befehl auf einem Windows Server mit cygwin

Hallo zusammen,

ich verzweifel langsam. Ich bin was Linux angeht noch ein totaler Neuling und versuche mich jetzt nach und nach da einzuarbeiten.
Für den Fall habe ich auf unseren MSServer 2008r2 cygwin installiert.
Dieser sollte im Optimalfall alle 15 Minuten ein Backup auf ein NAS ziehen. Der NAS läuft mit OpenMediaVault.

Soweit habe ich mich also schon mit dem rsync befehl befasst und dieser funktioniert, sofern ich Ihn mit Hand eingebe tadellos.
hier kurz der code:
rsync -av -b /cygdrive/c/Ordner der gesynct werden soll rsync://User@IPvomNAS:/Backup/ --backup-dir=Dateisischerungen/Aenderungen_und_Backups_vom_`date +%F_%Hh%M` --progress --password-file=rsync_pass

Wie bereits gesagt klappt dieser Befehl ohne Probleme und tut was er tun soll.

Jetzt wollte ich diesen Code gerne automatisch ausführen lassen - hier mal alle 15 Minuten.
Also habe ich mich mit crontab soweit auseinander gesetzt nur leider mag das irgendwie nicht funktionieren. Und ich weiß leider nicht woran es liegen könnte und hoffe hier auf ein paar Tipps oder Hinweise was ich falsch mache.

Ich habe den o.g. rsync-Befehl in eine datei geschrieben die rsync heißt. Der Inhalt sieht dann so aus.

*/15 * * * * rsync -av -b /cygdrive/c/Ordner der gesynct werden soll rsync://User@IPvomNAS:/Backup/ --backup-dir=Dateisischerungen/Aenderungen_und_Backups_vom_`date +%F_%Hh%M` --progress --password-file=rsync_pass

aufgerufen wird die datei dann mit

crontab rsync

Nur leider verweigert sich die Ausführung des Befehls.
Vielen Dank für eure Hilfe.

Grüße
sirhnry

Content-Key: 417073

Url: https://administrator.de/contentid/417073

Printed on: April 19, 2024 at 07:04 o'clock

Member: erikro
Solution erikro Feb 13, 2019 updated at 14:44:17 (UTC)
Goto Top
Moin,

man crontab face-wink

1. Du musst in die crontab des Users, unter dem das laufen soll den Eintrag einfügen. Das sieht dann so aus:

crontab -e

<edit>oder für einen anderen user

crontab -e -u username
</edit>

Daraufhin öffnet sich ein Editor. Dort trägst du ein

*/15 * * * * befehl

speicherst und schließt die Datei. "befehl" ersetzt Du natürlich mit dem Namen des Skripts. Gib den vollen, absoluten Pfad an. Die Shell, unter der cron ausgeführt wird, hat eine andere Umgebung als die des Users. Nach dem Schließen sollte diese Meldung erscheinen

crontab: installing new crontab

Möchtest Du sehen, was in der crontab steht, dann lautet der Befehl

crontab -l

und zum Löschen

crontab -r

2. Es ist überhaupt keine gute Idee, Skripte zu schreiben und sie mit Systembefehlen zu benennen. Benenn das Skript um!

hth

Erik
Member: sirhnry
sirhnry Feb 13, 2019 at 15:11:37 (UTC)
Goto Top
Danke schonmal für die Anleitung - Habe schritt 2 auch direkt befolgt und das Skript umbenannt. Jetzt spielt mir meine Linux unwissenheit jedoch nochmal ein kleinen Streich

gebe ich crontab -e ein bekomme ich keinen mir bekannten editor angezeigt sondern lediglich das, was auf dem Bild zu sehen ist. Starte ich mit der Eingabe eines "*" sagt er "E348: NO String under cursor"

Ich sehe schon, dass es nur ein "doofer Anwenderfehler" ist.

Grüße
crontap_e
Member: erikro
Solution erikro Feb 13, 2019 at 15:52:55 (UTC)
Goto Top
Moin,

ja, der vi ist sehr gewöhnungsbedürftig, aber absolut geil, wenn man ihn erst einmal beherrscht. Hier ein kleiner Spickzettel:

https://kb.iu.edu/d/afdc

Prinzipiell kennt er zwei Modi. Einen zum Bearbeiten (löschen, kopieren, einfügen usw.) des Textes und einen zum Editieren. Ist man im Modus Bearbeiten, so drückt man auf "i", um in den Editiermodus zu kommen. Jetzt erst kannst Du was schreiben. Mit ESC kommst Du dann wieder in den Bearbeitungsmodus. Für Deinen Zweck:

i
[Zeile eintragen]
ESC
:wq

Die letzte Zeile heißt übersetzt: Doppelpunkt leitet einen Befehl bzw. Befehlskette ein. w ist der Schreibbefehl. q steht für quit. Gaaaaaaaanz wichtig, da man am Anfang gerne mal lostippt und vergisst vorher das i zu drücken und man so die lustigsten Ergebnisse erreicht. Mit

:q!

verlässt man den vi ohne zu speichern.

Viel Spaß damit.

Erik
Member: sirhnry
sirhnry Feb 13, 2019 at 17:55:33 (UTC)
Goto Top
Alles klar!

Probiere es morgen direkt aus. Vielen vielen Dank für die umfangreiche Hilfe!
Member: erikro
erikro Feb 14, 2019 at 07:08:14 (UTC)
Goto Top
Gerne! Und wenn es geklappt hat, mache bitte das grüne Schildchen an den Thread. face-wink
Member: sirhnry
sirhnry Feb 14, 2019 at 14:11:07 (UTC)
Goto Top

speicherst und schließt die Datei. "befehl" ersetzt Du natürlich mit dem Namen des Skripts. Gib den vollen, absoluten Pfad an. Die Shell, unter der cron ausgeführt wird, hat eine andere Umgebung als die des Users. Nach dem Schließen sollte diese Meldung erscheinen


Kurze Frage nochmal zu vollen, absoluten Pfad, weil es wohl doch irgendwie nicht klappen mag.

der Pfad zu C wäre doch wie beim rsync Befehl dann der
/cygdrive/c/cygwin64/home/User/Befehldatei

oder vertue ich mich da schon wieder?
Member: erikro
erikro Feb 14, 2019 at 14:26:09 (UTC)
Goto Top
Moin,

cygwin mapt die Windows-Pfade auf ein Unix-System. Aus

c:\irgendwas\irgendwo\wasauchimmer

wird

/cygdrive/c/irgendwas/irgendwo/wasauchimmer

Das sollte klappen.

Liebe Grüße

Erik
Member: sirhnry
sirhnry Feb 14, 2019 updated at 15:41:53 (UTC)
Goto Top
Gut dann liegt es schonmal nicht an dem Pfad.
Also der cron Befehl funktioniert - das sehe ich, indem die cron_log datei alle 15 Minuten aktualisiert wird.
Das Problem scheint zu sein dass er die Passwortdatei nicht findet.

Habe beides ausprobiert:
wie oben im Befehl einfach ohne pfad (funktionierte ja mit der Handeingabe)
--password-file=rsync_pass
und einmal mit angabe des Pfades
--password-file=/cygdrive/c/usw/usw/rsync_pass

er spuckt mir leider immer wieder den Fehler aus, dass er die Passwortdatei nicht finden konnte.
rsync: could not open password file /cygdrive/c/usw/usw/usw/passwortdatei\#015: No such file or directory (2)
rsync error: syntax or usage error (code 1) at authenticate.c(187) [sender=3.1.2]
Member: erikro
Solution erikro Feb 14, 2019 at 15:43:57 (UTC)
Goto Top
Es gibt bei cygwin den Befehl cygpath, mit dem man Windows-Pfade in cygwin-Pfade und umgekehrt umwandeln kann. Nimm mal Deinen Originalpfad aus Windows und lasse Dir den von dem Tool als cygwin-Pfad ausgeben.
Member: sirhnry
sirhnry Feb 14, 2019 updated at 16:03:16 (UTC)
Goto Top
hab ich probiert - alle pfade entsprechend angepasst - leider findet er angeblich die PWdatei immernoch nicht. face-sad
$ cygpath -u 'C:\cygwin64\home\Admin'  
/home/Admin
Member: erikro
erikro Feb 15, 2019 at 06:32:24 (UTC)
Goto Top
Moin,

Zitat von @sirhnry:

hab ich probiert - alle pfade entsprechend angepasst - leider findet er angeblich die PWdatei immernoch nicht. face-sad
$ cygpath -u 'C:\cygwin64\home\Admin'  
> /home/Admin
> 

Das heißt, dass unter cgywin der Pfad /home/Admin lautet. Das hast Du so ins Skript eingetragen? Groß- und Kleinschreibung hast Du beachtet?

Liebe Grüße

Erik
Member: sirhnry
sirhnry Feb 15, 2019 at 10:29:28 (UTC)
Goto Top
Ja genau so. Bin heute nicht am Server werde es Montag nochmal probieren. Ich denke dass es sich um ein Rechteproblem handelt.

Danke nochmal für die Hilfe. Wenn es nicht gehen sollte melde ich mich nochmal. Schönes Wochenende.
Member: erikro
erikro Feb 15, 2019 at 11:07:41 (UTC)
Goto Top
Zitat von @sirhnry:

Ja genau so. Bin heute nicht am Server werde es Montag nochmal probieren. Ich denke dass es sich um ein Rechteproblem handelt.

Eher nicht, denn dann würde in der Fehlermeldung nicht "No such file or directory" sondern "permission denied" (oder so ähnlich) stehen. Beachte auf jeden Fall die Klein/Großschreibung bei den Pfaden. Das ist bei Unixen nicht egal.

Danke nochmal für die Hilfe. Wenn es nicht gehen sollte melde ich mich nochmal. Schönes Wochenende.

Viel Erfolg
Member: sirhnry
sirhnry Feb 19, 2019 at 12:04:54 (UTC)
Goto Top
Kurze verspätete Wasserstandsmeldung, da ich heute erst dazu kam. Es war tatsächlich wohl ein Rechteproblem - ich habe allen Usern den Zugang zu dieser Datei erlaubt und schon hatte ich keinen "-no such file-" Fehler mehr. Allerdings haut der cron.log noch
Unexpected remote arg: rsync://User@192.168.4.240:/Backup/
rsync error: syntax or usage error (code 1) at main.c(1361) [sender=3.1.2]

den Fehler raus.

Bin grade dran mich nochmal einzulesen.