rsync über Cronjob so steuern, dass es zu keiner Überschneidung kommt

ismon

Lieutenant
Registriert
Dez. 2006
Beiträge
734
Hallo,

ich habe vor ein Verzeichnis A mit dem Verzeichnis B per rsync synchron zu halten (in eine Richtung).

Das funktioniert mit rsync ja schon mal wunderbar:

rsync -av --delete /media/A/ /media/B/

Jetzt soll das ganze natürlich automatisch im Hintergrund zeitlich gesteuert laufen.
Im besten Fall jede Stunde.

Grundsätzlich wollte ich das per Cronjob mit @hourly machen.

Jetzt ist aber die Fragen was passiert wenn der Cronjob das rsync startet aber der vorherige rsync noch nicht fertig ist (weil aufgrund vieler Änderungen in den Files der vorherige rsync länger als eine Stunde braucht)?

Hat da jemand Erfahrung?
Gibts dafür eine Lösung?

Gruß
ismon
 
Wie wäre es wenn du per Cronjob ein Script startest, das erst prüft ob rsync läuft ?

Und wenn die IF-Abfrage negativ ist, dann dein rsync startet.
 
Der Befehl den du voranstellen musst heißt run-one (ist für die meisten Distributionen als Paket verfügbar).
 
rsync über ein Shellskript starten, was ein lockfile anlegt und drauf testet. Im Paket util-linux, was so ziemlich jede Distri vorinstalliert, ist das Tool flock(1) enthalten, mit dem dies besonders einfach realisiert werden kann. Also mal "man 1 flock" lesen.

Auf Rechnern mit systemd sind 'systemd timers' eine Alternative zu Cronjobs. Dort ist Schutz gegen Mehrfachstart bereits eingebaut.
 
Zuletzt bearbeitet:
Zurück
Oben