rsync Client synchron laufen lassen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
AkCh
Beiträge: 3
Registriert: 29.10.2009 12:23:45

rsync Client synchron laufen lassen

Beitrag von AkCh » 29.10.2009 12:34:26

Hallo Forum,

ich benutze unter rsync unter Windows, um Dateien von dort auf einen Debian-Server zu synchronisieren. (Auf dem Server läuft rsync als Daemon).

Das funktioniert alles tadellos. Das Problem ist, dass ja das wirkliche Updaten der Daten auf dem Server asynchron geschieht. Das heisst der Clientaufruf ist beendet, während der rsync-Daemon die gerade hochgeladenen Dateien noch verschiebt/kopiert etc.

Auf dem Windowsrechner habe ich eine Batch-Datei am Laufen, die jedoch nach dem rsync-Call noch weitere vom rsync abhängige Aktionen ausführen soll. D.h. der rsync-Client soll sich erst dann beenden, wenn der rsync-Daemon wirklich komplett fertig ist mit seinen sync-Aktionen.
(Einfach eine definierte Pause nach dem rsync-Call auf dem Windowsrechner zu machen ist etwas zu unscharf und will ich vermeiden).

Hier einmal der rsync-Call wie ich ihn bisher aufrufe:

Code: Alles auswählen

rsync  -avz --delete-delay --delay-updates --password-file=/xxx/passwd /files/ user@10.10.10.1::syncfiles
Hat jemand eine Idee wie man den rsync-Aufruf synchron kriegt?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync Client synchron laufen lassen

Beitrag von rendegast » 29.10.2009 13:20:48

Vielleicht mit
start /wait .....
start /wait /b .....
start /wait cmd /c.....
start /wait /b cmd /c .....
(statt /wait auch /w)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
AkCh
Beiträge: 3
Registriert: 29.10.2009 12:23:45

Re: rsync Client synchron laufen lassen

Beitrag von AkCh » 29.10.2009 13:44:50

Hi rendegast,

danke für die Antwort - das funktioniert aber leider auch nicht.

Das Problem ist, dass offensichtlich rsync seine Daten an den Daemon schickt, und dann schon seine Arbeit als erledigt ansieht.
Der Daemon arbeitet dann auf dem Server weiter.

Das beste wäre wenn der rsync-Client eine Kommandozeilenoption hätte, die bewirkt, dass er noch auf eine "finished"-Antwort vom Daemon wartet, und sich dann beendet. Leider habe ich etwas passendes in den manpages nicht gefunden (oder übersehen)..

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync Client synchron laufen lassen

Beitrag von rendegast » 29.10.2009 18:04:24

Die Verzögerung wird ja hiermit veranlaßt: '... --delete-delay --delay-updates ...'
Also müßte der rsync-Daemon das abschließende Signal geben.
man rsyncd.conf :
pre-xfer exec, post-xfer exec
You may specify a command to be run before and/or after the transfer. If the pre-xfer exec command fails, the transfer is aborted before it begins.

The following environment variables will be set, though some are specific to the pre-xfer or the post-xfer environment:

* RSYNC_MODULE_NAME: The name of the module being accessed.
* RSYNC_MODULE_PATH: The path configured for the module.
* RSYNC_HOST_ADDR: The accessing host's IP address.
* RSYNC_HOST_NAME: The accessing host's name.
* RSYNC_USER_NAME: The accessing user's name (empty if no user).
* RSYNC_PID: A unique number for this transfer.
* RSYNC_REQUEST: (pre-xfer only) The module/path info specified by the user (note that the user can specify multiple source files, so the request can be something like "mod/path1 mod/path2", etc.).
* RSYNC_ARG#: (pre-xfer only) The pre-request arguments are set in these numbered values. RSYNC_ARG0 is always "rsyncd", and the last value contains a single period.
* RSYNC_EXIT_STATUS: (post-xfer only) the server side's exit value. This will be 0 for a successful run, a positive value for an error that the server generated, or a -1 if rsync failed to exit properly. Note that an error that occurs on the client side does not currently get sent to the server side, so this is not the final exit status for the whole transfer.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
AkCh
Beiträge: 3
Registriert: 29.10.2009 12:23:45

Re: rsync Client synchron laufen lassen

Beitrag von AkCh » 30.10.2009 11:37:34

Danke nochmal für die Antwort.
Der post-xfer -Parameter hat mir tatsächlich geholfen. Jetzt lasse ich das, was ich vorher unter Windows aufrufen wollte, auf dem Debianserver laufen, nachdem sich der Daemon komplett beendet hat.

Da es sich nur um den Aufruf einer Website handelte war das auch kein Problem das so zu realisieren.
Wenn ich aber zwingend ein Windows-Programm nach dem kompletten durchlaufen des rsync-Daemons starten wollen würde, würde das so nicht funktionieren :roll:

Antworten