inotifywait
fará verificações recursivas.
Está nos repositórios do Ubuntu .
Eu tenho um diretório que tem muitas pastas com código dentro dele, e eu preciso executar um script para rsync mudar para alguns outros servidores. Eu tenho esse script escrito e funcionando bem, mas não consigo encontrar algo que irá verificar a árvore de diretórios para alterações. Eu tentei stat, mas que apenas verificar uma pasta para baixo, não recursivamente (tanto quanto eu poderia descobrir). Alguém sabe de um comando ou programa que eu poderia instalar para fazer isso? Eu uso o Ubuntu 10.04. Desde já, obrigado.
inotifywait
fará verificações recursivas.
Está nos repositórios do Ubuntu .
A ferramenta perfeita para este trabalho é usar o serviço de kernel inotify. Você pode usá-los em um shell script com o pacote inotify-tools (debian / ubuntu). Você pode ler mais e ver alguns exemplos na página do projeto . Há até um exemplo na página que parece fazer algo próximo do que você deseja:
#!/bin/sh
# get the current path
CURPATH='pwd'
inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \
-e close_write /tmp/test | while read date time dir file; do
FILECHANGE=${dir}${file}
# convert absolute path to relative
FILECHANGEREL='echo "$FILECHANGE" | sed 's_'$CURPATH'/__''
rsync --progress --relative -vrae 'ssh -p 22' $FILECHANGEREL [email protected]:/backup/root/dir && \
echo "At ${time} on ${date}, file $FILECHANGE was backed up via rsync"
done
O rsync verificará a árvore de diretórios em busca de mudanças e copiará apenas os arquivos alterados se você der a ela um diretório como fonte.
Dê uma olhada em inotify . Eu resolvi um problema semelhante há algum tempo com dnotify ou sgi_fam (não me lembro quais), mas inotify parece ter superado os dois.
Alguém já inventou essa roda. É chamado de lsyncd e aparentemente é um mashup de rsync e inotify. Eu não usei isso sozinho, porque as limitações do inotify são tais que ele não é dimensionado para diretórios realmente grandes (e profundos). Estou esperando até que eles reimplementem diretamente usando fsnotify .
Há também PIrsyncD que parece fazer a mesma coisa.
use find
find /path -mmin 1
Isso irá verificar se um arquivo ou diretório foi modificado há 1 min, olhe para a página man para mais opções.
Tags directory rsync monitoring ubuntu