
Estou usando unison
para sincronizar dados com um servidor e recentemente criei um cronjob para isso. O cronjob está sendo executado na inicialização e salva a saída em um arquivo de log. (informações adicionais abaixo).
O problema que estou tendo é que o uníssono tem bastante saída e gostaria de salvar apenas o resumo no arquivo de log. Existe uma maneira de fazer isso? Não encontrei uma maneira de tornar o uníssono menos detalhado, então pensei que talvez a saída pudesse ser filtrada de alguma forma - só não saberia como.
Obrigado!
Informação adicional:
No momento, o arquivo de log fica assim:
Contacting server...
Connected [//theserver//share/HDA_DATA/elrudi -> //thelaptop//home/elrudi]
Looking for changes
\ syncAll/Code/Aptana/T...avascript library code assist.txt
\ syncAll/Code/develope...nk/20070607 contacten (INDEX).xls
\ syncAll/Code/sourcefi...okexport/photos/10152112061815397
| syncAll/Code/Python/d...rawable-hdpi/ic_action_search.png
(... many many lines ...)
| syncAll/Work/2008_10 ...profile/StandardLastprofil_H0.xls
| syncAll/Work/2008_10 ...n/Load Profiles/Lastprofil_H0.xls
Waiting for changes from server
Reconciling changes
changed ----> syncAll/scriptfile1.sh
Propagating updates
UNISON 2.40.102 started propagating changes at 12:07:31.55 on 07 Oct 2015
[BGN] Updating file syncAll/scriptfile1.sh from /home/elrudi to //theserver//share/HDA_DATA/elrudi
100% 00:00 ETA
[END] Updating file syncAll/scriptfile1.sh
100% 00:00 ETA
UNISON 2.40.102 finished propagating changes at 12:07:31.61 on 07 Oct 2015
100% 00:00 ETA
Saving synchronizer state
Synchronization complete at 12:07:36 (1 item transferred, 0 skipped, 0 failed)
Eu gostaria de abandonar as linhas que começam com |
, /
, -
ou \
(a barra giratória indicando que um processo ainda não foi concluído).
Mais informações adicionais:
crontab -e
shows
@reboot /home/elrudi/sync.sh -batch 60 >> /home/elrudi/.cronjobs.log 2>&1
O sync.sh
script verifica se o servidor pode ser acessado localmente ou remotamente e executa o unison
comando apropriado. O -batch
parâmetro é adicionado para executar unison
sem a entrada do usuário e 60
é um tempo de espera (para garantir que unison
não seja executado antes que uma conexão esteja disponível).
Responder1
Ao chamar unison
seu sync.sh
script, chame-o da seguinte maneira:
unison ... 2>&1 | grep -vE '^[\|/-]|^$'
Isso removerá ( -v
) todas as linhas que correspondem à expressão regular: Todas as linhas que começam com um desses caracteres: \|/-
, ou completará as linhas vazias ( ^$
).
Editar: Se você deseja que o cronjob seja filtrado, use:
@reboot /path/to/sync.sh -batch 60 2>&1 | grep -vE '^[\|/-]|^$' >> /path/to/logfile