erro no script (bash): redirecionamento ambíguo

1

Estou reescrevendo um script simples, CopyScript.sh , escrevi há alguns anos para copiar o conteúdo do meu NAS para um disco USB.

#!/bin/bash
SYNCPATH="/volume1/"
SYNCPATHTO="/volumeUSB1/usbshare/synology-may-2015-bak/"
NAMELOG="/volume1/homes/sando/logrsync.log"
echo "${NAMELOG}"
date >"${NAMELOG}"
rsync --verbose --recursive --size-only --exclude-from 'exclude-list.txt' $SYNCPATH $SYNCPATHTO >> $NAMELOG 2>&1
date  >> "${NAMELOG}"
echo DONE >> "${NAMELOG}"

No entanto, quando executo bash CopyScript.sh , recebo o seguinte erro: "redirecionamento ambíguo: linha 7: 1"

E, de fato, quando olho para os arquivos no meu sistema de arquivos, vejo dois arquivos de log chamados logrsync.log, um de 1 kB e um de 0 kB. Eu entendo que isso dá um redirecionamento ambíguo, mas por que existem dois arquivos? Eu acredito que código bastante semelhante funcionou no meu sistema antigo. O que estou perdendo?

Felicidades, Sando

    
por sandokanfirst 05.06.2015 / 16:03

2 respostas

0

Tente colocar a variável NAMELOG entre aspas no redirecionamento rsync, ou seja, "$ {NAMELOG}"

    
por 05.06.2015 / 16:26
0

Você está tentando gravar a atividade de rsync em um arquivo de log

Mas isso não é feito com um redirecionamento > > mas através de alguns parâmetros

--log-file=FILE         override the "log file" setting
--log-file-format=FMT   override the "log format" setting

**--log-file=FIL**E This option causes rsync to log what it is doing to a file.  This is similar to the logging that a daemon  does, but  can  be requested  for the client side and/or the server side of a non-daemon transfer.  If specified as a client option, transfer logging will be enabled with a default format of "%i %n%L".  See  the 
**--log-file-format** option if you wish to override this.

**--log-file-format=FORMAT** This  allows  you  to  specify  exactly what per-update logging is put into the file specified by the --log-file option (which must also be specified for this option to have any effect).   If  you  specify  an  empty  string, updated files will not be mentioned in the log file.  For a list of the possible escape characters, see the "log format" setting in the rsyncd.conf manpage. The default FORMAT used if --log-file is specified and this option is not is ’%i %n%L’.

Então eu tentei isso:

rsync --verbose --recursive --size-only --exclude-from 'exclude-list.txt' --log-file=$NAMELOG  $SYNCPATH $SYNCPATHTO
    
por 05.06.2015 / 16:48