domingo, 17 de agosto de 2014

scp: Copiando remotamente arquivos e diretórios com espaços nos nomes

Digamos que você esteja em um servidor dentro de um diretório do tipo "Diretório com Espaços".

Para copiar alguma coisa desse diretório (ou o próprio), pode-se fazer:
$ scp -< opções> usuário@servidor:'"Caminho/do/Diretório com Espaços"' < Diretório e máquina de destino >

As aspas duplas servem, no terminal, para permitir que a inserção de espaços e caracteres especiais quando estes existem no nome do diretório são requeridos por algum outro comando ou sintaxe.
no lugar delas, podemos usar "\ ", ou \/, ou \\, para indicar que espaço " ", "\" ou "/", por exemplo fazem parte do nome que vamos digitar para ser operado pelo comando.
Se estivéssemos enviando comandos para o nosso terminal local, bastariam as aspas duplas (ou indicar com \ que o caractere seguinte deve ser considerado como parte do nome) para indicar ao shell que tudo entre elas faz parte do nome (nome de diretório, no caso do comando que estamos utilizando) que pretendemos operar através do comando.
Ocorre que precisamos passar este nome para ser operado pelo servidor, não pelo nosso terminal local!
Para que o que está em aspas duplas seja passado para o servidor, colocamos tudo entre aspas simples entre aspas simples.
Isso garante que o shell local não trabalhará com o conteúdo entre aspas duplas, apenas repassando para o comando scp operar com o conteúdo no servidor.