Comment copier un fichier avec scp avec des caractères spéciaux?

9

J'essaie de copier un fichier comportant des deux-points et des points, par exemple avec:

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

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

et combinaisons avec fichier:

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

Je suppose que scp essaie d'interpréter des parties du fichier comme un numéro de serveur et / ou de port. Comment puis-je éviter cela?

Si je renomme le fichier en test.json, cela scp test.json remote:tmp/fonctionne, mais ne scp test*62378 remote:tmp/fonctionne même pas .

Finn Årup Nielsen
la source
Permettez-moi de noter qu'une certaine "solution" évidente consiste à renommer le fichier, à le copier et à le renommer sur le serveur distant.
Finn Årup Nielsen
Une explication de la raison pour laquelle les globs ( *) ne fonctionnent pas. Cela se fait en shell, donc exactement le même texte (argument) sera passé scp. Vous devez modifier le texte (argument) transmis à scp. (voir la réponse ci-dessous, pour savoir comment changer l'argument de texte en.)
ctrl-alt-delor
Il convient de noter qu'il :s'agit d'un caractère de nom de fichier illégal sur OSX, donc si vous avez besoin de transférer ces fichiers là-bas, c'est quelque chose à garder à l'esprit.
Daenyth
Dans cygwin, si le nom de fichier commence par un trait d'union, vous pouvez préfixer le fichier avec un trait d'union double, par exemplescp -- -1.JvSbrpchxuk.png [email protected]:/tmp
Shane Rowatt

Réponses:

19

Utilisez ./avant votre nom de fichier:

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

Cela fait scpsavoir que c'est un fichier. Sans cela, scppense que c'est un nom d'hôte à cause des deux points.

cuonglm
la source
4

Utilisez le chemin en préfixant ./et échappez au vôtre :. Cyberiti a plus d'informations . Exemple:

scp ./file\:with\:colons.txt remoteserver:
Karlo
la source
2
Vous n'avez pas besoin d'échapper au colon.
cuonglm
Votre fuite :est au niveau du shell, pas au niveau du scp.
ctrl-alt-delor
Oui, vous devez vous échapper. Au moins dans ma coquille, j'ai besoin de m'évader.
Finn Årup Nielsen
@ FinnÅrupNielsen: Quelle est votre coquille? Vous n'avez pas besoin d'échapper aux deux points, le shell ajoute une barre oblique inverse pour vous. Vous pouvez les supprimer et voir que cela fonctionne toujours.
cuonglm
J'avais tort. scp ./test.json-2014-08-07T11:17:58.662378 remote:tmp/fonctionne vraiment! Désolé.
Finn Årup Nielsen