¿Cómo copio un archivo con scp con caracteres especiales?

9

Estoy tratando de copiar un archivo que tiene dos puntos y puntos, por ejemplo, con:

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

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

y combinaciones con archivo:

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

Supongo que scp intenta interpretar partes del archivo como un servidor o un número de puerto. ¿Cómo evito eso?

Si cambio el nombre del archivo a test.json, entonces scp test.json remote:tmp/funciona bien, pero ni siquiera scp test*62378 remote:tmp/funciona.

Finn Årup Nielsen
fuente
Permítanme señalar que una "solución" obvia es cambiar el nombre del archivo, copiarlo y volver a cambiar el nombre en el servidor remoto.
Finn Årup Nielsen
Una explicación de por qué los globos ( *) no funcionan. Se realiza en shell, por lo que se pasará exactamente el mismo texto (argumento) scp. Debe cambiar el texto (argumento) al que se pasa scp. (vea la respuesta a continuación, para saber a qué cambiar el argumento de texto).
ctrl-alt-delor
Cabe señalar que :es un carácter de nombre de archivo ilegal en OSX, por lo que si alguna vez necesita transferir estos archivos, debe tenerlo en cuenta.
Daenyth
En cygwin, si el nombre de archivo comienza con un guión, puede prefijar el archivo con un guión doble, por ejemploscp -- -1.JvSbrpchxuk.png [email protected]:/tmp
Shane Rowatt,

Respuestas:

19

Use ./antes de su nombre de archivo:

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

Eso hace scpsaber que es un archivo. Sin él, scppiensa que es un nombre de host debido a los dos puntos.

Cuonglm
fuente
4

Usa el camino pretendiendo ./y escapa de los tuyos :. Cyberiti tiene más información . Ejemplo:

scp ./file\:with\:colons.txt remoteserver:
Karlo
fuente
2
No necesitas escapar del colon.
Cuonglm
Su fuga :es a nivel de shell, no a nivel de scp.
ctrl-alt-delor
Sí, necesitas escapar. Al menos en mi caparazón necesito el escape.
Finn Årup Nielsen
@ FinnÅrupNielsen: ¿Cuál es tu caparazón? No necesita escapar de dos puntos, el shell agrega una barra invertida para usted. Puede eliminarlos y ver que aún funciona.
Cuonglm
Estaba equivocado. scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/realmente funciona! Lo siento.
Finn Årup Nielsen