No SSH, como faço para migrar para o meu sistema local?

129

Entrei sshno diretório do meu webhost e tarbaixei o webapp para fazer o download. Quando tento mvpara ~/mydirectory/backupsou /home/mydirectory/backups, define a "casa" como a minha raiz no serviço de hospedagem que eu estou ssh'ed em.

Como eu mv no ssh para uma unidade local enquanto ainda estou dentro do sistema do host?

JeanSibelius
fonte
De qual sistema operacional você está se conectando?
Zoredache

Respostas:

181

Primeiras coisas primeiro: ssh é uma maneira de acessar remotamente em outro computador. O shell (linha de comando) que você obtém após o ssh é (praticamente) o mesmo que se você tivesse aberto um xterm na máquina remota. Se não oferece essa maneira de mover arquivos.

No entanto, o fato de o computador remoto aceitar conexões ssh oferece algumas opções para trocar arquivos:

Use scp Para copiar do computador local para o controle remoto, digite: no computador local:

scp /tmp/file [email protected]:/home/name/dir

(onde / tmp / file pode ser substituído por qualquer arquivo local e / home / name / dir por qualquer diretório remoto)

Para copiar do computador remoto para o local, digite, no computador local :

scp [email protected]:/home/name/dir/file /tmp

Use sshfs Isso é um pouco mais avançado, mas muito, muito melhor (quando a conexão à Internet dos dois computadores é boa. Caso contrário, atenha-se ao scp)

Você pode "vincular" um diretório do computador remoto a um diretório (vazio) do computador local. Diga que você "vincula" o diretório / some / remote / dir do computador remoto para / home / youruser / remotecomp no seu computador. Se houver um arquivo / some / remote / dir / file no computador remoto, você poderá vê-lo em / home / youruser / remotecomp / file. Você pode copiar e mv como de costume e pode até alterar arquivos e diretórios remotos.

Observe, no entanto, que quando a conexão termina, / home / youruser / remotecomp se torna um diretório vazio novamente e você mantém apenas no computador local os arquivos que copiou para outros diretórios

Para alcançar isto:

1) instale o sshfs:

sudo apt-get install sshfs

2) crie um diretório vazio

mkdir /home/youruser/remotecomp

3) "vincule" os dois diretórios (o termo correto é montar)

sshfs [email protected]:/some/remote/dir /home/youruser/remotecomp

4) Aproveite

5) "desvincular" os dirs

fusermount -u /home/youruser/remotecomp

Se o computador local executar janelas Você pode encontrar versões do scpfor windows. Veja, por exemplo, winscp

josinalvo
fonte
Existe uma maneira de copiar o arquivo da máquina remota para a máquina local via "terminal na máquina remota"? No seu caso, você usou o terminal na máquina local. Estou falando de uma situação em que a máquina local é windows e o remoto é ubuntu e estou logado na máquina remota via ssh.
Chandresh
Geralmente não. Tanto quanto sei, copiar via "terminal na máquina remota" significa que você precisa de um servidor SSH na "máquina local" (propositalmente pulei isso durante a minha resposta, mas "o fato de o computador remoto aceitar conexões ssh" significa dizer "o fato de que o computador remoto está executando um servidor ssh")
josinalvo
No entanto, você pode encontrar "clientes scp" no Windows. Veja, por exemplo, winscp.net/eng/download.php
josinalvo
Eu amo a sshfsopção
Fibo Kowalsky
Se você estiver transferindo um arquivo grande, use rsync over ssh with rsync -P -e ssh /tmp/file [email protected]:/home/name/dir. Isso ocorre porque, se uma transferência de arquivo falhar na metade, scpapenas o arquivo será excluído. Por outro lado, se você usar rsynccom a -Popção, ele manterá um arquivo incompleto na máquina remota e, quando você reiniciar a transferência, garantirá que o que já está na máquina remota corresponda ao arquivo na sua máquina local e depois continue de onde a transferência parou.
Boris
16

Você pode usar scpou rsync. No seu sistema local:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

Mas, como você mencionou o backup, presumo que seria incremental e você precisará fazer isso de vez em quando. Portanto, rsyncé uma escolha melhor para backup incremental. No seu shell local:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

consulte rsync(1)e scp(1)páginas de manual para opções.

Mohammad Hedayati
fonte
10

Você pode usar a cópia segura do scp .

Do seu shell local:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Este exemplo copiará via ssh de /path/of-the/tar.archive do seu host da web para / home / mydirectory / backups /

Opções extras:

-C : permite compactação

pl1nk
fonte
6

Eu tive o mesmo problema. Aqui está a solução fácil: -

  1. Abra o nautilus (o explorador de arquivos)
  2. Clique + Other Locationsna parte inferior do painel esquerdo.
  3. No fundo há uma tira Connect to server. Escreva o endereço ssh na caixa de entrada como ssh://111.222.333.444/.
  4. Digite seu nome de usuário e senha na caixa de diálogo que será aberta.
  5. Após a autenticação bem-sucedida, você estará no homelocal remoto. Sinta-se livre para mover o arquivo aqui e ali.
rushi
fonte
Ótima resposta! Simples e mais próximo de uma resposta para a pergunta real, ou seja, como você mv de dentro do computador remoto ssh. A resposta é que você não pode fazê-lo no computador local. Ou isto! Você faz isso graficamente a partir do seu explorador, para que pelo menos para o usuário pareça realmente mover arquivos diretamente do remoto para o local.
Kvothe
2

As outras respostas recomendam rsyncou scp, ambas requerem que você saiba o local do arquivo que deseja copiar na máquina remota.

Se você deseja bisbilhotar na máquina remota, como pode ssh, você quer executar sftp. O login no servidor é muito semelhante ao ssh, mas quando você entrar, digite helppara obter a lista de comandos - ele permite que você se mova pelas máquinas local e remota e transfira arquivos facilmente.

Xanthir
fonte
1

É estranho que seja impossível por dentro ssh. Em um terminal comum, pode-se enviar / receber arquivos usando os comandos zmodem.

Isso ajudou a pesquisar no Google zssh: http://zssh.sourceforge.net/ . É necessário executá-lo como um invólucro para o original ssh.

Victor Sergienko
fonte