Mencoba rsync file dari satu server ke yang lain dalam sesi layar. Alih-alih menulis perintah panjang setiap kali, saya memutuskan untuk memasukkan skrip Bash. Namun, ketika saya menjalankannya, saya mendapatkan Missing trailing-" in remote-shell command.
kesalahan.
Ingin tahu apa yang salah dalam naskah.
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]
Script menggemakan apa yang akan dilakukan pertama dan kemudian menjalankan perintah. Di bawah ini adalah tumpukan skrip saya:
#!/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}
(Saya tahu, ini cukup lama, tetapi masih satu dari tautan pertama saat mencari "Missing trailing-" in remote-shell command ")Labirin tanda kutip lolos dan tidak terhindar dalam kebingungan Anda
$RSYNCOPT
sih dari saya; Saya tidak terkejut bahwa ini membingungkan rsync, dan / atau ssh, dan / atau shell lokal atau remote.Mungkin ada cara untuk membuatnya bekerja dengan menambahkan atau menghapus garis miring terbalik, tetapi saya menyarankan solusi berikut ini sebagai gantinya:
Menggantikan:
oleh:
Saya mencoba versi skrip Anda yang sedikit disederhanakan di sistem saya dan mendapat pesan kesalahan yang sama dengan yang Anda lakukan; solusi ini memperbaikinya.
sumber
Menggunakan file konfigurasi ssh juga merupakan opsi yang valid. Inilah yang dapat Anda masukkan / tambahkan ke
~/.ssh/config
file Anda :Anda juga dapat memfilter parameter ini dengan host jarak jauh dengan menambahkan baris-baris ini dengan
Host xyz.domain.whatever
dan membuat indentasi:sumber