Por que o scp diz “Nenhum tal arquivo”?

1

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

<filename>: No such file or directory

No entanto, no script, eu verifico o arquivo, e está tudo bem. Eu fiz set -o verbose no começo e aqui está o que eu 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, eu tentei executar o comando scp como resultado e estava tudo bem; copiou. O que está errado ???

    
por daviesgeek 02.10.2013 / 07:34

1 resposta

2

Eu não tenho certeza do que você está fazendo, mas quando eu tento o comando que você tem no seu exemplo eu 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 porque você está citando o caminho de destino e também inclui barras invertidas que estão escapando dos espaços. No entanto, quando o shell atual descasca as aspas duplas, ele também descasca a barra invertida, deixando o caminho de destino como uma string nua com espaços. Você precisa seguir um dos seguintes procedimentos para aninhá-lo ainda mais, para que os espaços sejam corretamente excluídos:

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, contrabarra

$ 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 - triplos invertidos

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