Puoi anche usare inotifywait
dal pacchetto inotify-tools.
inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE
do
echo need to rsync $MODFILE ...
done
Lsyncd sarebbe una buona soluzione per questo.
Lsyncd controlla un'interfaccia di monitoraggio degli eventi degli alberi di directory locali (inotify o fsevents). Aggrega e combina gli eventi per alcuni secondi e quindi genera uno (o più) processi per sincronizzare le modifiche. Di default è rsync. Lsyncd è quindi una soluzione live mirror leggera che è relativamente facile da installare, non richiede nuovi filesystem o dispositivi a blocchi e non ostacola le prestazioni del filesystem locale.
In conclusione, utilizza lo stesso tipo di strumenti per eseguire il lavoro (inotify e rsync) come suggerito da altre risposte, ma è più facile da configurare per chi non ha familiarità con lo scripting della shell.
Ne ho molto bisogno poiché il mio codice deve essere eseguito su box remoti e scrivo codice sulla macchina locale. Ho trovato un simpatico strumento che puoi usare per monitorare continuamente le tue cartelle locali e sincronizzarle con una cartella remota o locale:https://github.com/axkibe/lsyncd
Un semplice comando per sincronizzare continuamente una directory locale con una macchina remota su ssh sarà:
lsyncd -log all -nodaemon -rsyncssh <local_path> <user>@<ip> <remote_path>
Proprio come con qualsiasi altro comando rsync, assicurati di fornire il percorso della cartella corretto e controlla prima di eseguire il comando. Ho quasi ucciso una delle mie macchine remote perché mi mancava di fornire una directory di destinazione corretta. Assicurati di non perdere il percorso remoto e non utilizzare '/' a meno che tu non sappia cosa stai facendo.