Řešení 1:
Pokud máte to štěstí, že používáte distribuci založenou na debianu, apt-get install dnotify
. Ostatní distribuce mají pravděpodobně něco podobného - hledejte dnotify
jméno.
dnotify je jednoduchý program založený na linuxovém jádře 2.4.19+ s dnotify API.dnotify může provést zadaný příkaz pokaždé, když se změní obsah konkrétního adresáře. Spouští se z příkazové řádky a má dva argumenty:jeden nebo více adresářů ke sledování a příkaz, který se má provést při každé změně adresáře. Možnosti určují, jaké události se mají spouštět:když byl soubor v adresáři načten, kdy byl vytvořen, smazán atd.
Pokud to chcete zvládnout v rámci svého vlastního programu, dnotify je také API, které chcete použít.
Řešení 2:
Můžete spustit skript pomocí inotify-tools, něco takového. Bude v adresáři sledovat změny v upravených souborech, nových souborech a smazaných souborech a poté skript spustí.
#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
rsync [options] /home/me/code/ /media/nfs/code/
done
Řešení 3:
incron je v podstatě to, co chcete, myslím. Používá inotify jako oznamovací mechanismus (který, jak jiní zdůraznili, nahrazuje dnotify), ale nevyžaduje skript, který by se neustále spouštěl pomocí inotifywait nebo podobně (ačkoli démon incron samozřejmě běží neustále). Systémové 'crontabs' a uživatelské 'crontabs' jsou podporovány podobným způsobem jako standardní cron, ale místo zadávání časů jako spouštěčů se používají události inotify a názvy souborů/adresářů.
incron je zabalen pro mnoho distribucí, včetně Ubuntu a Debianu, věřím.