Por que o caminho definido é usado como nome de arquivo quando transfiro arquivos por meio do scp para um host do Windows?

3

Ao tentar copiar um arquivo do Linux (Raspbian para ser preciso, embora não ache que seja importante) para o Windows usando o SCP:

scp a.txt {user}@{ip}:\C\Users\{user}\a.txt

O arquivo é copiado, mas para C:\Users\{user}\CUsers{user}a.txt .

Parece que eu preciso escapar do '\' de alguma forma, mas não consegui descobrir como.

    
por DeepSpace 11.03.2016 / 09:59

2 respostas

3

Embora eu nunca tenha usado scp no Windows, estou apenas supondo, certamente parece que as barras invertidas são ignoradas. Ou melhor, como se fossem tomados como personagens de fuga e, como não escapam a nada relevante, estão sendo ignorados. Considere isso em uma máquina Linux:

$ cd \usr\share
bash: cd: usrshare: No such file or directory

Como você pode ver, o \ foi ignorado e o caminho concatenado para uma única string, exatamente como descrito acima.

O local de destino padrão para scp é o diretório pessoal do usuário. Como isso é \C\Users\userName , sua tentativa de especificar um caminho é tomada para um nome de arquivo ( \C\Users\userName\a.txt se torna CUsersuserNamea.txt ) e o arquivo é salvo no local padrão com esse nome: C:\Users\userName\CUsersuserNamea.txt .

Uma solução simples, nesse caso, seria não especificar um caminho:

scp a.txt user@ip:
    
por 11.03.2016 / 10:30
2

Ao jogar com caminhos do Windows, recomendo usar um relativo, como (relativo ao diretório inicial):

scp a.txt {user}@{ip}:a.txt
    
por 11.03.2016 / 10:30