Ist es sicher, dieselbe Quelle parallel mit demselben Ziel zu synchronisieren?

Ist es sicher, dieselbe Quelle parallel mit demselben Ziel zu synchronisieren?

Meine Anwendung verwendet rsync, um Dateien vom Netzwerktreiber in den lokalen Cache zu kopieren und so die Leistung zu verbessern.

Aber da meine Anwendung parallel ausgeführt werden könnte, so wie die rsync, und es könnte ein Fall sein, dass 2 Instanz vonrsyncparallel für dieselbe Quelle und dasselbe Verzeichnis ausgeführt werden.

Ich bin auf das Problem gestoßen, dass das Ziel nicht vollständig synchronisiert wird (ein Unterverzeichnis bleibt leer). Ich bezweifle also, dass es ein Problem von rsync ist.

  • Ist es mit rsync sicher, Dateien parallel von derselben Quelle zum selben Ziel zu kopieren?
  • Gibt es eine Möglichkeit, die Richtigkeit eines solchen Vorgangs sicherzustellen?

Die Optionen, die ich verwende, sind:

rsync -a --copy-unsafe-links --delete

Antwort1

Es ist wahrscheinlich sicher, rsyn parallel auszuführen, aber nicht effizient, da die Dateien höchstwahrscheinlich zweimal übertragen werden, da rsync die Liste der zu übertragenden Dateien zu Beginn erstellt. Es besteht natürlich immer die geringe Chance, dass dieselbe Datei gleichzeitig von beiden rsyncs übertragen wird, aber der Inhalt sollte danach derselbe sein.

Um doppelte Durchläufe zu verhindern, schreibe ich normalerweise ein Skript, das nach einer Sperrdatei sucht und diese andernfalls touchausführt, die am Ende entfernt wird. Alternativ können Sie in Ihrem Skript eine Falle verwenden, um die Sperrdatei zu bereinigen, wenn Sie das Skript abbrechen oder wenn ein Fehler auftritt (verwenden Sie „help trap“ in Ihrer Shell). Soweit ich weiß, gibt es in rsync selbst keinen solchen Sperrmechanismus (was ohnehin schwer zu implementieren wäre).

verwandte Informationen