Sie können auch inotifywait
verwenden aus dem inotify-tools-Paket.
inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE
do
echo need to rsync $MODFILE ...
done
Lsyncd wäre dafür eine gute Lösung.
Lsyncd überwacht eine Ereignisüberwachungsschnittstelle für lokale Verzeichnisbäume (inotify oder fsevents). Es aggregiert und kombiniert Ereignisse für einige Sekunden und erzeugt dann einen (oder mehrere) Prozess(e), um die Änderungen zu synchronisieren. Standardmäßig ist dies rsync. Lsyncd ist somit eine leichtgewichtige Live-Mirror-Lösung, die vergleichsweise einfach zu installieren ist, keine neuen Dateisysteme oder Blockgeräte erfordert und die lokale Dateisystemleistung nicht behindert.
Unterm Strich verwendet es die gleichen Tools, um die Arbeit zu erledigen (inotify und rsync), wie in anderen Antworten vorgeschlagen, aber es ist einfacher für jemanden einzurichten, der nicht mit Shell-Skripten vertraut ist.
Ich brauche das sehr, da mein Code auf Remote-Boxen ausgeführt werden muss und ich Code auf einem lokalen Computer schreibe. Ich habe ein nettes Tool gefunden, mit dem Sie Ihre lokalen Ordner kontinuierlich überwachen und mit entfernten oder lokalen Ordnern synchronisieren können:https://github.com/axkibe/lsyncd
Ein einfacher Befehl zum kontinuierlichen Synchronisieren eines lokalen Verzeichnisses mit einem entfernten Rechner über ssh lautet:
lsyncd -log all -nodaemon -rsyncssh <local_path> <user>@<ip> <remote_path>
Stellen Sie wie bei jedem anderen rsync-Befehl sicher, dass Sie den richtigen Ordnerpfad angeben und überprüfen, bevor Sie den Befehl ausführen. Ich hätte fast einen meiner Remote-Rechner getötet, weil ich es versäumt hatte, ein korrektes Zielverzeichnis anzugeben. Stellen Sie sicher, dass Sie den Remote-Pfad nicht auslassen und verwenden Sie kein '/', es sei denn, Sie wissen, was Sie tun.