Como copiar um arquivo com scp com caracteres especiais?

9

Estou tentando copiar um arquivo que possui dois pontos e pontos, por exemplo, com:

scp "test.json-2014-08-07T11:17:58.662378" remote:tmp/

scp test.json-2014-08-07T11\:17\:58.662378 remote:tmp/

e combinações com o arquivo:

scp "file:///home/.../test.json-2014-08-07T11:17:58.662378" remote:tmp/

Meu palpite é que o scp tenta interpretar partes do arquivo como um servidor e / ou número de porta. Como evito isso?

Se eu renomear o arquivo para test.json, ele scp test.json remote:tmp/funcionará bem, mas nem scp test*62378 remote:tmp/funcionará.

Finn Årup Nielsen
fonte
Permitam-me apenas observar que uma "solução" óbvia é renomear o arquivo, copiá-lo e renomeá-lo novamente no servidor remoto.
Finn Årup Nielsen 7/08/14
Uma explicação do porquê globs ( *) não funciona. É feito em shell, portanto, exatamente o mesmo texto (argumento) será passado para scp. Você precisa alterar o texto (argumento) que é passado para scp. (veja resposta abaixo, para o que mudar argumento de texto.)
ctrl-alt-Delor
Deve-se notar que esse :é um caractere ilegal de nome de arquivo no OSX; portanto, se você precisar transferir esses arquivos, há algo a ter em mente.
Daenyth 7/08/2014
Em cygwin, se o nome do arquivo começa com um hífen pode prefixar o arquivo com um duplo hífen, por exemploscp -- -1.JvSbrpchxuk.png [email protected]:/tmp
Shane Rowatt

Respostas:

19

Use ./antes do seu nome de arquivo:

scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/

Isso faz scpsaber que é um arquivo. Sem ele, scpacha que é um nome de host por causa dos dois pontos.

cuonglm
fonte
4

Use o caminho acrescentando ./e escapando do seu :. Cyberiti tem mais informações . Exemplo:

scp ./file\:with\:colons.txt remoteserver:
Karlo
fonte
2
Você não precisa escapar do cólon.
precisa saber é
Seu escape :é no nível do shell, não no nível do scp.
Ctrl-alt-delor
Sim, você precisa escapar. Pelo menos na minha concha, preciso fugir.
Finn Årup Nielsen 7/08/14
@ FinnÅrupNielsen: Qual é a sua concha? Você não precisa escapar do cólon, o shell adiciona uma barra invertida para você. Você pode removê-los e ver se ainda funciona.
precisa saber é
Eu estava errado. scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/realmente funciona! Desculpa.
Finn Årup Nielsen 7/08/14