Faça o cronlog rsync somente se houver transferência

1

Eu tenho este crontab funcionando a cada 5 minutos:

date >> ~/18/rsync.log
rsync -vaz user@r18:~/assets ~/18 >> ~/18/rsync.log 2>&1

Adiciona isso ao arquivo de log a cada 5 minutos:

Thu Aug 16 13:00:01 MSK 2012
receiving incremental file list

sent 506 bytes  received 541488 bytes  361329.33 bytes/sec
total size is 12954651209  speedup is 23901.84

E, às vezes, adiciona registros de transferência reais:

Thu Aug 16 13:10:01 MSK 2012
receiving incremental file list
assets/response/20120816/
assets/response/20120816/1017161.doc
assets/response/20120816/1017162.doc
assets/response/20120816/1017163.doc

sent 568 bytes  received 561686 bytes  1124508.00 bytes/sec
total size is 12954864201  speedup is 23040.95

Eu gostaria de omitir o log de transferência vazio e manter as listagens de transferência reais. Existe alguma maneira de configurar o rsync para produzir saída detalhada somente em transferências não vazias?

    
por ujifgc 16.08.2012 / 11:18

4 respostas

1

Ok, escrevi um script de shell engenhoso para filtrar o spam sem sentido proveniente do rsync em transferências vazias. Se você conhece alguma maneira melhor de detectá-lo, adicione sua resposta.

#!/bin/sh

LOG=$HOME/18/sync.log
TMP=$HOME/18/temp.log
SRC=user@r18:~/assets
DST=$HOME/18

echo >> $TMP
date >> $TMP
rsync -az $SRC $DST --log-file=$TMP --log-file-format='%10l %n%L'
[ 'cat $TMP | wc -l' != 4 ] && cat $TMP >> $LOG
rm $TMP
    
por 16.08.2012 / 13:08
2

Não use a opção -v do rsync; em vez disso, use --out-format:

rsync --out-format="%n%L" -az user@r18:~/assets ~/18 >> ~/18/rsync.log 2>&1

Somente terá saída quando você estiver transferindo arquivos e nenhuma saída quando não estiver. Para ter uma saída mais elaborada, veja a página man do rsync.conf, na seção "log format".

    
por 28.06.2014 / 00:09
1

Por favor, verifique as opções rsync --log-file-format e --log-file. Formato de arquivo de log padrão adiciona 2 linhas para o arquivo de log, mesmo se não transferir nada, mas por favor, verifique manual. Talvez se você alterar o formato de log irá adicionar apenas a entrada com arquivos transferidos.

    
por 16.08.2012 / 11:52
0

É melhor você usar o Observador para executar rsync sempre que um arquivo for alterado. É baseado em incron , mas pode monitorar diretórios recursivamente.

$ git clonet git://github.com/splitbrain/Watcher.git
$ cd Watcher
$ cp watcher.ini ~/.watcher.ini

~/.watcher.ini

[DEFAULT]
logfile=/tmp/watcher.log
pidfile=/tmp/watcher.pid
[job1]
watch=/home/quanta/x
events=create,delete
recursive=true
autoadd=true
command=rsync -vaz quanta@localhost:~/x ~/y --log-file=/home/quanta/rsync.log

Iniciando o daemon:

$ ./watcher start
$ ps -ef | grep [w]atcher
quanta    3695     1  0 17:01 ?        00:00:00 /usr/bin/python2.7 ./watcher.py restart

rsync.log

2012/08/16 17:01:42 [3710] receiving file list
2012/08/16 17:01:42 [3724] .d..t...... x/
2012/08/16 17:01:42 [3724] >f.st...... x/a.txt
2012/08/16 17:01:42 [3724] sent 42 bytes  received 180 bytes  444.00 bytes/sec
2012/08/16 17:01:42 [3724] total size is 45  speedup is 0.20
2012/08/16 17:01:42 [3731] receiving file list
2012/08/16 17:01:42 [3745] sent 14 bytes  received 103 bytes  234.00 bytes/sec
2012/08/16 17:01:42 [3745] total size is 45  speedup is 0.38
2012/08/16 17:01:42 [3752] receiving file list
2012/08/16 17:01:42 [3766] sent 14 bytes  received 103 bytes  234.00 bytes/sec
2012/08/16 17:01:42 [3766] total size is 45  speedup is 0.38
2012/08/16 17:01:42 [3773] receiving file list
2012/08/16 17:01:42 [3787] sent 14 bytes  received 103 bytes  234.00 bytes/sec
2012/08/16 17:01:42 [3787] total size is 45  speedup is 0.38
    
por 16.08.2012 / 12:21