[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rsync mit geänderten Dateinamen / Verzeichnisstruktur



Moinmoin,

On Sun, Sep 23, 2018 at 07:59:23PM +0200, Martin Steigerwald wrote:
> Ich sortiere gerade einen Haufen von Dateien in Verzeichnisse. Und 
> benenne einige oder vielleicht sogar alle dabei um.
> [...]
> Gibt es ein Werkzeug, das von dem Verzeichnis, wo ich die Änderungen 
> durchführt, auf eine Kopie mit der alten Verzeichnisstruktur, den alten 
> Dateinamen synchronisiert und dabei auch verschobene und umbenannte 
> Dateien korrekt erkennt? Falls ja welches und wie sind eure Erfahrungen 
> damit? Ein Abgleich nach Änderungszeit (modification time) und Größe 
> dürfte für meinen Anwendungsfall reichen.

Ich nutze hierfür lsyncd. Dieses Helferchen verfügt über einen Modus
"rsyncssh", bei dem beim Starten einmal initial eine Synchronisierung
per rsync durchgeführt wird, danach aber die Quelle per inotify auf
Änderungen überwacht wird. Neu hinzugekommene Dateien werden dann wieder
durch ein auf eben diese neuen Dateien beschränktes rsync
synchronisiert, wohingegen Umbenennungen ("mv A B") erkannt und auf der
Zielseite gleichermaßen durchgeführt werden: "ssh $TARGET 'mv A B'".

In Deinem Fall (-> SSH nicht notwendig) müsste auch schon der von mir
bislang nicht genutzte Modus "direct" funktionieren, vgl.
<https://axkibe.github.io/lsyncd/manual/config/layer4/>.

Ich benutze lsyncd auch gerne, wenn z.B. große Bäume (Gesamtgröße
und/oder hohe Anzahl an Dateien) synchronisiert werden sollen: anstelle
eines rsync-Cronjob mit eigenem Locking und naturgemäß hohen
IO-Anforderungen muss lsyncd nicht regelmäßig die Quelle auf Änderungen
durchsuchen, sondern erfährt von diesen gezielt per inotify und kann
dafür dann einen "kleinen" und ebenso gezielten rsync anstoßen. Es ist
dann höchstens noch bei vielen per inotify zu überwachenden
Verzeichnissen auch ein Anpassen von fs.inotify.max_user_watches
erforderlich, damit das funktioniert ...

Darüber hinaus kann lsyncd auch noch sehr viel feingranularer auf
inotify-Meldungen eingehen. So lasse ich in einem Fall z.B. automagisch
die in einem bestimmten Verzeichnis abgelegten Videos in ein anderes
Format konvertieren und dann die neuen Dateien (und nur die) per
rsyncssh (siehe oben) anderswohin synchronisieren, ohne dass die Quelle
immer wieder ge-scan-t werden muss. Damit habe ich dann an der Quelle
alle Rohdaten, aber auf dem Zielsystem nur die gewünschten Nutzdaten,
und brauche dafür keinen Cronjob (mit Latenz) oder manuellen
Skriptaufruf/Button-Klick (DAU-inkompatibel).

HTH,
Flo


Reply to: