Resultado de “rsync”

1

Eu preciso criar um script que execute periodicamente (a cada 5 segundos) um rsync entre dois diretórios.

Um requisito é que eu precise gravar, com um timestamp, os arquivos copiados em um arquivo de log, mas não consigo encontrar uma maneira de obter um resultado dos arquivos rsync copiados. Existe uma maneira de saber quais arquivos foram copiados?

    
por daniel sp 08.09.2016 / 23:14

3 respostas

2

Você pode usar a opção -v ( --verbose ) de rsync para obter quais arquivos estão sendo copiados.

Para obter uma saída específica , rsync tem a opção --info .

Por exemplo, para obter apenas os arquivos que deveriam ser copiados, com êxito / sem êxito, ambos são exibidos:

rsync --info=name /source /destination

Para obter apenas estatísticas de transferência:

rsync --info=stat /source /destination

Você também pode usar maiúsculas no valor da opção (por exemplo, --info=NAME ) e anexar 2 após o valor da opção para aumentar a verbosidade, se possível (por exemplo, --info=NAME2 ).

Também há muitas outras possibilidades, confira man rsync e especialmente rsync --info=help :

% rsync --info=help
Use OPT or OPT1 for level 1 output, OPT2 for level 2, etc.; OPT0 silences.

BACKUP     Mention files backed up
COPY       Mention files copied locally on the receiving side
DEL        Mention deletions on the receiving side
FLIST      Mention file-list receiving/sending (levels 1-2)
MISC       Mention miscellaneous information (levels 1-2)
MOUNT      Mention mounts that were found or skipped
NAME       Mention 1) updated file/dir names, 2) unchanged names
PROGRESS   Mention 1) per-file progress or 2) total transfer progress
REMOVE     Mention files removed on the sending side
SKIP       Mention files that are skipped due to options used
STATS      Mention statistics at end of run (levels 1-3)
SYMSAFE    Mention symlinks that are unsafe

ALL        Set all --info options (e.g. all4)
NONE       Silence all --info options (same as all0)
HELP       Output this help message

Options added for each increase in verbose level:
1) COPY,DEL,FLIST,MISC,NAME,STATS,SYMSAFE
2) BACKUP,MISC2,MOUNT,NAME2,REMOVE,SKIP

Exemplo:

% rsync --info=name test.txt foobar:/spamegg/
test.txt

% rsync --info=stats test.txt foobar:/spamegg/
sent 86 bytes  received 41 bytes  254.00 bytes/sec
total size is 10  speedup is 0.08
    
por heemayl 08.09.2016 / 23:44
1

Use o sinalizador -v , além de quaisquer outras sinalizações necessárias.

Em man rsync :

  

-v, --verbose

  Esta opção aumenta a quantidade de informação que você recebe durante a transferência. Por padrão, o rsync funciona silenciosamente. Um único -v lhe dará informações sobre quais arquivos estão sendo transferidos e um breve resumo no final. Duas opções -v fornecem informações sobre quais arquivos estão sendo ignorados e um pouco mais de informações no final ...

    
por user4556274 08.09.2016 / 23:35
0

No caso de alguém precisar disso ... Depois de muitos testes eu estou indo para algo como:

#!/bin/bash
rm out.log
touch out.log
while :
do
rsync --log-file=out.log -a /tmp/test /tmp/backup
counter='wc -l < out.log'
echo $counter
rm out.log
if [[ $counter -gt 2 ]]; then
rsync --log-file=out.log -a /tmp/test /tmp/backup
fi
sleep 5
done
    
por daniel sp 09.09.2016 / 08:03