Isso é mais uma resposta ao Gilles, mas eu queria formatar um pequeno código; Uma maneira mais fácil de fazer o monitoramento dos arquivos alterados é armazenar um md5sum de md5sums do diretório, ala:
find /path/to/iso/data/ -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum | awk '{print $1}'
... que lhe dá a saída do tipo:
b843afc89097f0abc062e0d0e14d480b
Se você salvar isso em cada iteração do seu cron, é uma maneira muito rápida e eficaz de determinar se o conteúdo foi alterado no destino. Você poderia até mesmo construir um wrapper em torno do daemon rsync do xinetd; substitua a chamada pelo binário em /etc/xinetd.d/rsync:
server = /usr/bin/rsync
... com um script:
server = /path/to/script.sh
E, em seguida, no seu script, compare e faça a ação toda vez que o daemon sair com um status 0 válido. Isso é muito mais automatizado do que um cron job, com o benefício que ele só executa se você o codificar para o rsync exit 0. Algo como ... (código do psuedo aqui):
#!/bin/sh
/usr/bin/rsync "$*"
if [ $? -eq 0 ]; then
OLDVALUE='cat /var/cache/isodata.txt'
NEWVALUE='find /path/to/iso/data/ -type f -exec md5sum {} + | awk '{print $1}' | sort | md5sum | awk '{print $1}''
if [ ${OLDVALUE} != ${NEWVALUE} ]; then
-- run ISO making code --
echo ${NEWVALUE} > /var/cache/isodata.txt
fi
fi
Essa é a ideia geral para começar.