rsync -rtv <source> <dest> | wc -l
Se o resultado for mais de 4 algo mudou
Eu uso o rsync (cygwin) para transferir arquivos entre o servidor e o meu PC.
O rsync é executado a cada 2 minutos e, às vezes, há alguns arquivos para transferir, às vezes não. Eu preciso executar algumas ações, mas somente se os arquivos foram transferidos do servidor para o PC.
Como sei se os arquivos foram transferidos ou não?
P.S. Eu tentei usar os códigos de saída do rsync, mas ele retorna 0 em ambos quando os arquivos são transferidos e quando eles não são.
Eu uso a opção
rsync .... --log-file=/path/to/log/file
Isso adiciona ao arquivo de log, para que você possa descobrir se alguma coisa foi transferida e, em caso afirmativo, o que exatamente, até muito mais tarde do que quando o backup ocorreu.
rsync --stats
Você pode usar a opção --stats
ou --info=stats2
eventualmente filtrando com um grep.
rsync -avr ORIG DEST --stats | grep "Number of created files"
Number of created files: 14
No manual de rsync
você pode ler
--stats
This tells rsync to print a verbose set of statistics on the file transfer, allowing you to tell how effective rsync’s delta-transfer algorithm is for your data. This option is equivalent to --info=stats2 if combined with 0 or 1 -v options, or --info=stats3 if combined with 2 or more -v options.
Mais notas:
Eu sugiro que você use um arquivo de log como proposto pela MariusMatutiae caso você tenha a curiosidade para ver quais arquivos foram transferidos.
Para o filtro grep
, você pode escolher cada linha que achar interessante:
Exemplo de saída com algum arquivo transferido:
Number of files: 15 (reg: 14, dir: 1)
Number of created files: 14 (reg: 14)
Number of deleted files: 0
Number of regular files transferred: 14
Total file size: 280,860 bytes
Total transferred file size: 280,860 bytes
Literal data: 280,860 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 281,842
Total bytes received: 285
O mesmo comando sem nenhum arquivo transferido:
Number of files: 15 (reg: 14, dir: 1)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 0
Total file size: 280,860 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 357
Total bytes received: 12