Por que o scp diz "Esse arquivo não existe"?

Por que o scp diz "Esse arquivo não existe"?

Eu tenho um script bash que usa scppara copiar um arquivo da minha máquina para outra. O script continua saindo depois que eu digito a senha SSH com o erro:

<filename>: No such file or directory

Ainda assim, no script, eu verifico o arquivo e está tudo bem. Eu fiz set -o verbose no início e aqui está o que recebo no final do script:

scp /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4 [email protected]:"/media/3TB/TV\ Shows/NCIS"
[email protected]'s password:
/Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4: No such file or directory

Então, tentei executar o scpcomando conforme gerado e deu certo; copiou. O que está errado???

Responder1

Não tenho muita certeza do que você está fazendo, mas quando tento o comando que você tem no seu exemplo, recebo o seguinte:

$ scp /home/saml/projects/Cooks.com\ -\ Recipe\ -\ Coconut\ Chicken.mht \
       root@remotey:"/root/some spaced out file.mht"
scp: ambiguous target

Isso ocorre porque você está citando o caminho de destino e também inclui barras invertidas que escapam dos espaços. No entanto, quando o shell atual remove as aspas duplas, ele também remove a barra invertida simples, deixando o caminho de destino como uma string simples com espaços. Você precisa seguir um destes procedimentos para aninhá-lo ainda mais, para que os espaços sejam escapados corretamente:

Exemplos

método #1 – aspas duplas, aspas simples

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:"'/home/user/some spaced out file.txt'"

método #2 – aspas simples, aspas duplas

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:'"/home/user/some spaced out file.txt"'

método #3 – aspas simples, barra invertida

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:'/home/user/some\ spaced\ out\ file.txt'

método #4 – aspas duplas, barra invertida

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:"/home/user/some\ spaced\ out\ file.txt"

método #5 – barras invertidas triplas

$ scp /path/with\ spaces/file\ with\ spaces.txt \
       user@remotey:/home/user/some\\\ spaced\\\ out\\\ file.txt

informação relacionada