Můžete také použít inotifywait
z balíčku inotify-tools.
inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE
do
echo need to rsync $MODFILE ...
done
Lsyncd by pro to bylo dobré řešení.
Lsyncd sleduje rozhraní monitoru událostí lokálních adresářových stromů (inotify nebo fsevents). Agreguje a kombinuje události na několik sekund a poté vytvoří jeden (nebo více) procesů pro synchronizaci změn. Ve výchozím nastavení je to rsync. Lsyncd je tedy odlehčené živé zrcadlové řešení, které se poměrně snadno instaluje, nevyžaduje nové souborové systémy nebo bloková zařízení a neomezuje výkon místního souborového systému.
Sečteno a podtrženo, k provedení této práce používá stejný druh nástrojů (inotify a rsync), jak navrhují jiné odpovědi, ale je snazší jej nastavit pro někoho, kdo není obeznámen se skriptováním v shellu.
Potřebuji to hodně, protože můj kód musí běžet na vzdálených boxech a píšu kód na místním počítači. Našel jsem pěkný nástroj, který můžete použít k neustálému sledování místních složek a jejich synchronizaci se vzdálenou nebo místní složkou:https://github.com/axkibe/lsyncd
Jednoduchý příkaz pro nepřetržitou synchronizaci místního adresáře se vzdáleným počítačem přes ssh bude:
lsyncd -log all -nodaemon -rsyncssh <local_path> <user>@<ip> <remote_path>
Stejně jako u jakéhokoli jiného příkazu rsync se ujistěte, že zadáte správnou cestu ke složce a před spuštěním příkazu ji zkontrolujte. Málem jsem zabil jeden ze svých vzdálených počítačů, protože jsem zapomněl zadat správný cílový adresář. Ujistěte se, že nezmeškáte vzdálenou cestu a nepoužívejte '/', pokud nevíte, co děláte.