Estou conectado ao meu servidor web viaSSHusando uma ferramenta chamadaMobaXterm(é algo parecido com o Putty, mas com recursos avançados, isso não é tão importante...)
Meu problema é que quero enviar um diretório do meu computador local (Windows) para um diretório específico deste servidor (Linux).
Então eu tentei usar oscpcomando como mostrado aqui:http://www.hypexr.org/linux_scp_help.php
Eu fiz desta forma:
-jailshell-4.1$ scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html
ssh: Could not resolve hostname C: Name or service not known
Mas, como você pode ver, recebo um erro.
Por que? o que estou perdendo? Como posso corrigir esse problema?
Tnx
Responder1
Presumivelmente, você está executando isso em um shell MobaXterm local (ou seja, local para a máquina Windows). Se for esse o caso, você precisará atualizar a sintaxe do comando scp para acomodar esse ambiente, embora a sintaxe esteja incorreta de qualquer maneira.
MobaXterm fornece acesso a unidades locais em seu shell por meio do ponto de montagem /drives/X
, com X sendo a letra da unidade do Windows.
Além disso, a sintaxe geral (simplificada) do scp, independentemente do ambiente, é:
uso de scp:
scp [[user@]host1:]/path[/filename] [[user@]host2:]/path/[filename]
A primeira sequência ( [[user@]host1:]/path[/filename]
) é a seção 'FROM'; a origem do arquivo ou arquivos a serem copiados. O segundo é o 'PARA'; o destino. Os colchetes indicam argumentos opcionais.
Na verdade, é apenas uma versão habilitada para ssh do comando cp padrão; com a seção anterior à que :
contém as informações específicas do ssh e as informações posteriores relativas à operação cp.
do utilizador:
user
o padrão é seu nome de usuário local atual - ele pode ser omitido se esse for o nome de usuário correto na origem e no destino.
hospedar:
host
o padrão é o computador local (localhost); portanto, se você estiver copiando de/para a máquina local E o nome de usuário no host local a ser usado for o usuário atual, você poderá omitir esse argumento para o(s) arquivo(s) local(is).
caminho de arquivo:
path/filename
o padrão é o diretório inicial do usuário especificado e pode ser omitido se desejado. filename pode ser omitido ao fazer uma cópia recursiva como na sua situação - basta fornecer o caminho nesse caso. Geralmente o caminho completo e o nome do arquivo são especificados na seção FROM, e apenas o caminho na seção TO (o padrão será manter o mesmo nome de arquivo).
Estou usando remoteuser
e remotePC
como nome de usuário e nome do host do PC remoto; substitua pelos nomes corretos.
Sintaxe correta no seu exemplo:
scp -r "/drives/C/Users/Andrea/Documents/Betrivius/candycane-0.9.6/candycane" remoteuser@remotePC:/home6/XXX/public_html
Utilize o comando man scp
ouesse sitepara detalhes adicionais (argumentos, outras informações de uso).
Opção GUI
Alternativamente, MobaXterm fornece um navegador de arquivos gráfico (construído em sftp ou scp com base nas opções de configuração) que fornece transferências bidirecionais de arquivos de arrastar e soltar quando você se conecta ao host remoto via ssh.Detalhes aqui.
Responder2
A menos que esse servidor web tenha uma maneira de se conectar diretamente à sua máquina Windows (na porta 22, o que exigirá a execução de um daemon SSH, bem como as portas sendo encaminhadas), você precisará invocar o SCP do lado do Windows. MobaXTerm é um cliente ssh, não tenho certeza se ele possui SCP integrado (eu pessoalmente não o uso), mas a melhor solução aqui é usar um cliente SCP, seja um cliente de linha de comando ou um cliente GUI.
Um cliente bastante popular para Windows éWinSCP, é meu cliente goto quando não tenho escolha a não ser usar o Windows.
Responder3
Para responder
Por que o comando scp apresenta erro?
, sendo o erro
ssh: Could not resolve hostname C: Name or service not known
, e o comando usado sendo
scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html
Eu diria:
a sintaxe C:\Users\....
está errada. Neste contexto você tem duas possibilidades para descrever um caminho:
foo/bar/...
: significa quefoo
é um diretório (pasta) visível no seu caminho, pode ser o seu caminho atual (pwd
) ou na variável env do caminho (echo $PATH
)./foo/bar/...
significa quefoo
é um diretório (pasta) presente na raiz do seu sistema de arquivos.
Como você usou a primeira opção (porque não existe "/" antes de "C:"), o shell procura C:
no caminho, mas não consegue encontrá-lo. Conseqüentemente, ele tenta corresponder a outra sintaxe: [user@]host1:/path/..../filename
. Nesta situação, o ssh reclama porque não consegue encontrar um endereço IP C:
(porque pensa que esse C:
é o nome do host). Encontrar um endereço IP correspondente a um nome de host é chamado de "resolução de nome de host"; aqui esta resolução falha, então você entende o erro.
Responder4
No Windows, o seguinte comando funcionou para mim: - scp -r "Reqd.Folder name in quotes" username@remote_server:File path at server
scp -r "ABC" shivam@servidor_remoto:/media/External/shivam.
Vá para a pasta antes de executá-lo onde a pasta necessária está presente