Tentando rsync arquivos de um servidor para outro em uma sessão de tela. Em vez de escrever o comando longo toda vez, decidi inserir um script Bash. No entanto, quando o executo, recebo um Missing trailing-" in remote-shell command.
erro.
Pensando no que está errado no script.
root@127.0.0.1:~# /raid/data/module/bin/rbk.sh Movies /raid/data/Movies rsync_target/
/raid/data/module/bin/screen -S Movies
/opt/bin/rsync --rsh="ssh -p 10022 -c des"\
--rsync-path="/opt/bin/rsync" --inplace --progress -a -vv \
/raid/data/Movies sys@192.168.1.15:/raid/data/rsync_target/
Missing trailing-" in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(361) [sender=3.0.5]
O script ecoa o que ele fará primeiro e depois executa o comando. Abaixo está um despejo do meu script:
#!/bin/bash
SCREEN="/raid/data/module/bin/screen"
SCREENOPT="-S"
SCREEN_TITLE=$1
RSYNC="/opt/bin/rsync"
RSYNCOPT="--rsh=\"ssh -p 10022 -c des\" --rsync-path=\"/opt/bin/rsync\" --inplace --progress -a -vv"
SOURCE=$2
REMOTE_USER="sys@"
REMOTE_HOST="192.168.1.15"
REMOTE_BASE=":/raid/data/"
REMOTE_TARGET=$3
echo ${SCREEN} ${SCREENOPT} ${SCREEN_TITLE}
echo ${RSYNC} ${RSYNCOPT} ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
${RSYNC} ${RSYNCOPT} ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
run_rsync() { /opt/bin/rsync "--rsh=\"ssh -p 10022 -c des\" --rsync-path=\"/opt/bin/rsync\" --inplace --progress -a -vv" $1 $2 } run_rsync ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
(eu sei, isso é bastante antigo, mas ainda assim é um) dos primeiros links ao procurar por "Missing trailing-" no comando shell remoto ")O labirinto de aspas escapadas e não escapadas no seu
$RSYNCOPT
confunde o inferno fora de mim; Não estou surpreso que isso confunda rsync e / ou ssh e / ou o shell local ou remoto.Pode haver uma maneira de fazer isso funcionar adicionando ou removendo barras invertidas, mas sugiro a seguinte solução alternativa:
Substituir:
de:
Tentei uma versão ligeiramente simplificada do seu script no meu sistema e recebi a mesma mensagem de erro que você; essa solução alternativa a corrigiu.
fonte
Usar o arquivo de configuração ssh também é uma opção válida. Aqui está o que você pode colocar / adicionar ao seu
~/.ssh/config
arquivo:Você também pode filtrar esses parâmetros por host remoto , adicionando
Host xyz.domain.whatever
e recuando estas linhas :fonte